【问题标题】:What is the difference between string[][] and string[,] in C# [duplicate]C#中的string[][]和string[,]有什么区别[重复]
【发布时间】:2016-05-17 02:00:49
【问题描述】:

语法略有不同,但它们之间有什么区别。

public static string[][] str1 = { new string[] { Total, "N2" }};
public static string[,] str2 = { { Total, "N2" } }; 

每个的使用指南是什么?

【问题讨论】:

  • 第一个是“锯齿状”——一个数组引用数组。
  • 看看这个answer

标签: c# arrays string multidimensional-array


【解决方案1】:

看看这里: https://msdn.microsoft.com/en-us/library/2s05feca.aspx

基本上,区别在于内存的分配方式。 [,] 符号将在一个块中分配所有需要的内存,而 [][] 符号将分配一个指向数组的指针数组,其中每个数组是单独分配的,不一定与其他数组相邻

【讨论】:

【解决方案2】:

在你引用的例子中:

public static string[][] str1 = { new string[] { Total, "N2" }};
public static string[,] str2 = { { Total, "N2" } };

第一个是数组数组(Jagged Array)。每个条目都可以指向一个字符串数组。

第二个是普通的二维数组(多维数组)。

【讨论】:

    【解决方案3】:

    简而言之,[,] 是一个一次性分配的二维数组,而 [][] 是一个数组数组,因此内存分配是渐进的——初始化语法(如您所指出的)也不同。

    另一个重要的区别是,在 [][] 类型中,您可以定义不同大小的每个“行”。在 [,] 中无法做到这一点,这在某种程度上是矩阵的 C# 表示。

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      • 2016-03-26
      • 2022-01-13
      • 2016-11-09
      • 2018-07-16
      • 1970-01-01
      相关资源
      最近更新 更多