如何在c#中创建锯齿状数组?

我熟悉C.我可以这样写:

uint array[0xFFFF][20]; 

但我不知道如何在Csharp中做到这一点。 我尝试了所有的MS教程和其他教程,但没有运气。

有人可以帮帮我吗?

官方教程 。 基本上,您首先创建“外部”数组,然后循环它,并分别创建每个“内部”数组。

两个例子:

 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]; 

如果只需要一个2D矩形数组,可以使用int[,] b = new int[10, 7];

 int[][] jaggedArray = new int[3][]; jaggedArray[0] = new int[5]; jaggedArray[1] = new int[4]; jaggedArray[2] = new int[2]; 

要么

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

请参阅锯齿状arrays(C#编程指南)

我不知道在C中但在c#中你可以使用锯齿状数组,如:

 // 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

我想这可能会对你有所帮助

  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(); } 
 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(); } } } } 

创建和显示锯齿状数组的元素

  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(""); } 

这里插入我使用的循环

一个[行]。长度

代替

则为a.length,

后面的原因是每一行都有不同的列数,所以在第二个循环中你必须提到每行的长度