【问题标题】:C# Arrays - string[][] vs. string[,] [duplicate]C# 数组 - string[][] 与 string[,] [重复]
【发布时间】:2012-09-27 06:40:15
【问题描述】:

可能重复:
What is differences between Multidimensional array and Array of Arrays in C#?

谁能解释一下string[][]string[,]之间的区别?

【问题讨论】:

    标签: c# arrays multidimensional-array


    【解决方案1】:

    string[,]multidimensional array

    string[][]Jagged array

    锯齿状数组是其元素为数组的数组。的元素 锯齿状数组可以具有不同的维度和大小。锯齿状的 数组有时被称为“数组数组”。

    【讨论】:

      【解决方案2】:

      string[,] - Multidimensional Arrary(矩形数组)

      多维可以有多个维度。下面的例子展示了如何创建一个两行两列的二维数组。

      声明:

      string[,] contacts;
      

      实例化:

      string[,] contacts = new string[2,2];
      

      初始化:

      string[,] contacts = new string[2, 2] { {"John Doe","johndoe@example.com"}, {"Jane Doe","janedoe@example.com"} };
      



      string[ ][ ] - Jagged Array(数组中的数组)

      锯齿状数组是其元素为数组的数组。锯齿状数组的元素可以具有不同的维度和大小。锯齿状数组有时称为“数组数组”。

      锯齿状数组可以有效地存储许多不同长度的行。可以使用任何类型的数据、引用或值。索引锯齿状数组很快。分配它们有点慢。

      交错数组比多维数组快

      声明:

      string[][] contacts;
      

      实例化:

      string[][] contacts = new string[2][];
      for (int i = 0; i < contacts.Length; i++) 
      {
         contacts[i] = new string[3];
      }
      

      初始化:

      string[][] contacts = new string[2][] { new string[] {"john@example.com","johndoe@example.com"}, new string[] {"janedoe@example.com","jane@example.com","doe@example.com"} };
      

      【讨论】:

      • 看看我是如何编辑你的答案的,你将学习如何插入链接......
      【解决方案3】:

      string[][] 作为jagged array

      锯齿状数组是其元素为数组的数组。锯齿状数组的元素可以具有不同的维度和大小。锯齿状数组有时称为“数组数组”。

      string[,]multidimensional array

      数组可以有多个维度

      【讨论】:

        【解决方案4】:

        两个方面的差异很重要:

        内存方面:

        [n,m] - 保存为一长串内存,就好像它是 [n*m] [n][m] - 保存为大小为 n 的简单数组,其中每个元素都是指向大小为 m 的数组的指针。

        访问方式:

        [n,m] - 要访问单元格 i,j,真正发生的是它获取 [n*m] 数组的指针并将其偏移 n*width+m,然后访问该值。 [n][m] - 要访问单元格 i,j,您只需访问索引 n(偏移量 #1)处的子数组指针,然后访问索引 m(偏移量 #1)处的子数组。

        [][]两方面都比较好。访问效率更高,内存更灵活。 此外,您可以只访问单行一次并更有效地处理它,因为您不会对该行中的每个单元格执行完整的多维访问。

        但是,[,] 有一个优点:您始终知道矩阵的宽度是固定的。使用 [][],每个子数组可以有不同的长度,甚至可以为空。这可以被认为是一种优势,尽管有时相反也可能有用。

        【讨论】:

          【解决方案5】:

          string[][] (Jagged Arrays) 是具有固定行数和可变列长的数组,而string[,] (Rectangular Arrays) 是具有固定行数的矩阵行数和列数。有很好的讨论over there

          【讨论】:

            猜你喜欢
            • 2011-03-12
            • 2011-03-01
            • 2017-06-07
            • 1970-01-01
            • 2011-09-24
            • 2016-07-10
            • 2011-07-26
            • 1970-01-01
            • 2017-03-29
            相关资源
            最近更新 更多