3

I'm familiar with C. Where I can write like this:

uint array[0xFFFF][20];

But I've no idea how to do this in Csharp. I tried all MS tutorials and other tutorials but no luck.

Can someone please help me out?

Matzi
  • 13,770
  • 4
  • 33
  • 50
user1439564
  • 105
  • 1
  • 2
  • 8
  • possible duplicate of [Initializing jagged arrays](http://stackoverflow.com/questions/1738990/initializing-jagged-arrays) – nawfal Nov 11 '13 at 10:10

6 Answers6

11

Official tutorial. Basically you create the "outer" array first, and then loop trough it, and create each "inner"array individually.

Two examples:

int[][] a = new int[] { new int[]{ 1, 2 }, new int[]{ 3, 4, 5, 6, 7 }};

int[][] c = new int[100][];
for (int i = 0; i < c.length; i++) c[i] = new int[5];

If you need only a 2D rectangular array, you can use int[,] b = new int[10, 7];.

Matzi
  • 13,770
  • 4
  • 33
  • 50
  • Yes, I've seen that implementation. But if I use that, and say my inner array has elements of 100, i've to write down that sentence 100 times. Correct? – user1439564 Jul 05 '12 at 11:03
  • I've just came across this: data[,] = new uint[0xFFFF, 20]; it appears that that does the trick. – user1439564 Jul 05 '12 at 11:04
  • Sure it does, that is what I mentioned at the and as rectangular 2D array. – Matzi Jul 05 '12 at 11:05
2
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

or

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };

See Jagged Arrays (C# Programming Guide)

Habib
  • 219,104
  • 29
  • 407
  • 436
1

I don't know that in C but in c# you can use jagged arrays like:

// Declare local jagged array with 3 rows.
    int[][] jagged = new int[3][];

    // Create a new array in the jagged array, and assign it.
    jagged[0] = new int[2];
    jagged[0][0] = 1;
    jagged[0][1] = 2;

    // Set second row, initialized to zero.
    jagged[1] = new int[1];

    // Set third row, using array initializer.
    jagged[2] = new int[3] { 3, 4, 5 };

    // Print out all elements in the jagged array.
    for (int i = 0; i < jagged.Length; i++)
    {
        int[] innerArray = jagged[i];
        for (int a = 0; a < innerArray.Length; a++)
        {
        Console.Write(innerArray[a] + " ");
        }
        Console.WriteLine();
    }

http://www.dotnetperls.com/jagged-array

Dr. Rajesh Rolen
  • 14,029
  • 41
  • 106
  • 178
0

I think this may help you

       static void Main(string[] args)
    {
        Console.WriteLine("enter the size of rows");

        int n = Convert.ToInt32(Console.ReadLine());

        int[][] a = new int[n][];
        for (int i = 0; i < a.Length; i++)
        {
            Console.WriteLine("enter the number of elements for row {0}", i + 1);
            int x = Convert.ToInt32(Console.ReadLine());
            a[i]=new int[x];
            for (int j = 0; j < a[i].Length; j++)
            {
                a[i][j] = Convert.ToInt32(Console.ReadLine());
            }
        }
        for (int i = 0; i < a.Length; i++)
        {
            for (int j = 0; j < a[i].Length; j++)
            {
                Console.Write(a[i][j]+"\t"); 
            }
            Console.WriteLine();
        }

            Console.ReadKey();
    }
0
namespace jaggedarray
{
    class Program
    {
        static void Main(string[] args)
        {

            int[][] jagged = new int[5][];
            jagged[0] = new int[4] { 22, 33,44,55 };
            jagged[1] = new int[1] { 2 };
            jagged[2] = new int[4] { 1, 2, 3, 4 };
            jagged[3] = new int[2] { 12,13};
            jagged[4] = new int[1] {2};
            for (int i = 0; i < jagged.Length; i++ ) {
                for (int j = 0; j < jagged[i].Length; j++)
                {
                    Console.Write("\t{0}",jagged[i][j]);
                }
                Console.WriteLine();
                Console.WriteLine();
            }

            // input jagged array

            int [][] arrays=new int[5][];
            Console.WriteLine("Please Enter the ValueType to make a jagged array:");
            arrays[0] = new int[1];
            arrays[1] = new int[2];
            arrays[2]=new int [3];
            arrays[3]=new int [4];
            arrays[4] = new int[5];
            for (int i = 0; i < arrays.Length;i++ ) {

                for (int j = 0; j < arrays[i].Length; j++)
                {
                    arrays[i][j] = Convert.ToInt32(Console.ReadLine());
                }
            }

            Console.WriteLine("This is jagged array::");
            for (int i = 0; i < arrays.Length;i++ ) {

                for (int j = 0; j < arrays[i].Length;j++ ) {
                    Console.Write("\t{0}", arrays[i][j]);

                }
                Console.WriteLine();
            }
        }

    }
}
JasonMArcher
  • 14,195
  • 22
  • 56
  • 52
Aqib
  • 1
  • 3
    Hello and welcome to Stack Overflow. Code only answers are usually not very useful unless they explain what they do. This is very true of long segments of code. Please consider adding an explanation of what you changed or wrote. – JasonMArcher Nov 13 '14 at 18:53
0

creating and displaying element of jagged array

 int[][] a = new int[2][];//its mean num of row is 2 which fixed
        int choice;//thats i left on user choice that how many number of column in each row he wanna to declare

        for (int row = 0; row < a.Length; row++)
        {
            Console.WriteLine("pls enter number of colo in row {0}", row);
            choice = int.Parse(Console.ReadLine());
            a[row] = new int[choice];
            for (int col = 0; col < a[row].Length; col++)
            {
                a[row][col] = int.Parse(Console.ReadLine());
            }
        }
        //loop for out put the values of jagged array
        for (int row = 0; row < a.Length; row++)
        {
            for (int col = 0; col < a[row].Length; col++)
                Console.Write(a[row][col]+"\t");
            Console.WriteLine("");
        }

here in inserting loop i used

a[row].length

instead of

a.length,

the reason behind is that every row have different number of columns so that way in second loop you have to mentioned the length of each row

Adiii
  • 54,482
  • 7
  • 145
  • 148
  • @matzi your first line is incorrect dear ,you can also try ,you wrote new int[] while this is error.this one is correct for internalize jagged array int[][] a = new int[][] { new int[]{ 1, 2 }, new int[]{ 3, 4, 5, 6, 7 }}; – Adiii Jan 19 '15 at 03:44