The C# Jagged is an array whose elements are also an array, i.e., it is an array of arrays. These elements inside a jagged array can be of different dimensions and even can be of different sizes.
A Jagged array can be declared and initialized as follows:
Int[][] JaggedAr = new int[2][];
Here size 2 represents the number of arrays, i.e., two in JaggedAr[][].
Next, We have to initialize the arrays inside before using the Jagged.
JaggedAr[0] = new int[]{5,9,6};
JaggedAr[1] = new int[]{2,5};
Let us see an example code demonstrating Jagged arrays.
C# Jagged Array Example
The below-shown example explains to you the declaration and use of the Jagged Array.
using System;
class program
{
public static void Main()
{
string[] NameOfEmployee = new string[2];
NameOfEmployee[0] = "John";
NameOfEmployee[1] = "Winson";
string[][] JaggedAr = new string[2][];
JaggedAr[0] = new string[] { "Bachelors", "masters", "Doctrate" };
JaggedAr[1] = new string[] { "Bachelors", "Masters" };
for(int i = 0;i<JaggedAr.Length;i++ )
{
Console.WriteLine(NameOfEmployee[i]);
Console.WriteLine("-------");
string[] arrayin = JaggedAr[i];
for(int j = 0; j< arrayin.Length;j++)
{
Console.WriteLine(arrayin[j]);
}
Console.WriteLine();
}
Console.ReadLine();
}
}

ANALYSIS
NameOfEmployee[] is a string array in which there are two elements.
JaggedAr[][] is the C# jagged array having two string arrays.
JaggedAr[0] has three elements —— Bachelors, masters, and Doctorate.
JaggedAr[1] has two elements in it —– Bachelors, Masters.
Since JaggedAr.Length is 2, When i = 0, 0<2 condition returns true. So, the control enters the parent loop and prints NameOfEmployye[0], which is.
John
——
Now JaggedAr[0] is stored in arrayin[]
When j=0, j<arrayin.Length, i.e., 0<3 since JaggedAr[0] is having three elements.
0<3 returns true. So, C# prints Bachelors.
Again j++, i.e., 1
Now, 1 < 3 returns true. So, it prints Masters
Again j++, i.e., 2
Next, 2 < 3 returns true, and It prints Doctorate.
Again j++, i.e., 3
Now, 3 < 3 returns false come out of the child loop.
Now Console.WriteLine() is executed.
Again Jagged Array increments i in the parent loop. This time i=1, so 1<2 returns true. Thus enters the loop and prints NameOfEmployee[1], i.e.,
Winson
———-
arrayin = JaggedAr[1]
j=0 and j<arrayin.Length, which is 2, and it returns true. So, the control enters the child loop and prints arrayin[0]
Bachelors
j++ = 1 and 1<2 returns true. Enters the child loop and prints arrayin[1], i.e.,
Masters
j++ = 2 and 2<2 returns false. So, it comes out of the child loop and executes.
Console.WriteLine();
Now increments I by 1 so i++ = 2
2<2 returns false, so it comes out of the parent loop.