Как вывести зубчастый массив в с#? (Чтоб не выходило исключение)

using System;
using static System.Console;
using static System.Array;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Write("Введите ширину массива: ");
            int N = int.Parse(ReadLine());
            Write("Введите длинну массива: ");
            int M = int.Parse(ReadLine());
            Write("Введите диапазон массива: ");
            Write("\n\tВведите минимальное число: ");
            int A = int.Parse(ReadLine());
            Write("\n\tВведите максимальное число: ");
            int B = int.Parse(ReadLine());

            int[][] arr = new int[N][];

            arr[0] = new int[N];
            arr[1] = new int[M];

            arr.GetLength(0);
            arr.GetLength(1);

            Random a = new Random();

            for (int i = 0; i < arr.GetLength(0); i++) { 
                for(int j = 0; j < arr.GetLength(1); j++)
                {
                    arr[i][j] = a.Next(A,B) ;
                }
            }

            for (int i = 0; i < arr.GetLength(0); i++)
            {
                for (int j = 0; j < arr.GetLength(1); j++)
                {
                    Write(" " + arr);
                }
            }
        }
    }
}

Ответы (2 шт):

Автор решения: Igor
    for (int i = 0; i < arr.GetLength(0); i++) { 
        for(int j = 0; arr[i] != null && j < arr[i].GetLength(0); j++) {
→ Ссылка
Автор решения: aepot

Зубчатый массив, это просто массив массивов, одномерный массив одномерных массивов, поэтому стоит использовать просто .Length.

Random rnd = new Random();
int[][] arr = new int[N][];

for (int i = 0; i < arr.Length; i++)
{
    arr[i] = new int[M];
    for(int j = 0; j < arr[i].Length; j++)
    {
        arr[i][j] = rnd.Next(A, B);
    }
}

for (int i = 0; i < arr.Length; i++)
{
    WriteLine(string.Join(" ", arr[i]));
}
→ Ссылка