什么是锯齿状阵列?

时间:2010-04-05 03:16:18

标签: c# jagged-arrays

什么是锯齿状数组(在c#中)?任何例子,什么时候应该使用它......

7 个答案:

答案 0 :(得分:55)

锯齿状数组是一个数组数组。

string[][] arrays = new string[5][];

这是五个不同字符串数组的集合,每个字符串数组可以是不同的长度(它们也可以是相同的长度,但重点是它们没有保证)。

arrays[0] = new string[5];
arrays[1] = new string[100];
...

这与2D数组不同,它是矩形的,意味着每行具有相同的列数。

string[,] array = new string[3,5];

答案 1 :(得分:10)

锯齿状数组在任何语言中都是相同的,但是在第二个和超出数组的情况下,你有一个2维数组,不同的数组长度。

[0] - 0, 1, 2, 3, 4
[1] - 1, 2, 3
[2] - 5, 6, 7, 8, 9, 10
[3] - 1
[4] - 
[5] - 23, 4, 7, 8, 9, 12, 15, 14, 17, 18

答案 2 :(得分:6)

尽管问题所有者选择了最佳答案,但我仍想提供以下代码以使锯齿状阵列更清晰。

using System;

class Program
{
static void Main()
 {
 // 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();
  }
 }
}

输出

1 2

0

3 4 5

锯齿状数组用于以不同长度的行存储数据。

有关详细信息,请查看this post at MSDN blog

答案 3 :(得分:5)

您可以在此处找到更多信息:http://msdn.microsoft.com/en-us/library/2s05feca.aspx

另外:

锯齿状数组是一个数组,其元素是数组。锯齿状阵列的元素可以具有不同的尺寸和大小。锯齿状数组有时被称为“数组数组”。以下示例显示如何声明,初始化和访问锯齿状数组。

以下是具有三个元素的一维数组的声明,每个元素都是一个整数的数组:

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

答案 4 :(得分:2)

锯齿状数组是指在声明期间声明行数但在运行时或用户选择时声明列数的数组,只是当你希望每个JAGGED数组中不同数量的列适合于那个案子

int[][] a = new int[6][];//its mean num of row is 6
        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());
            }
        }

答案 5 :(得分:0)

Jagged数组是一个包含其他数组的数组。

锯齿状数组是一个数组,其中行数是固定的,但列数不固定。

C#中窗口表单应用程序的锯齿状数组代码

int[][] a = new int[3][];

a[0]=new int[5];
a[1]=new int[3];
a[2]=new int[1];

int i;

for(i = 0; i < 5; i++)
{
    a[0][i] = i;
    ListBox1.Items.Add(a[0][i].ToString());
}

for(i = 0; i < 3; i++)
{
    a[0][i] = i;
    ListBox1.Items.Add(a[0][i].ToString());
}

for(i = 0; i < 1; i++)
{
    a[0][i] = i;
    ListBox1.Items.Add(a[0][i].ToString());
}

正如您在上面的程序中看到的那样,没有行固定为3,但列数不固定。所以我们采用了三个不同的列值,即5,3和1.此代码中使用的ListBox1关键字用于我们将在窗口表单中使用的列表框,通过单击按钮查看结果也用于窗口形式。这里完成的所有编程都在按钮上。

答案 6 :(得分:-2)

Jagged Array是具有不同行数的多维数组。