C#中string [] []和string [,]之间有什么区别?

时间:2016-02-07 10:12:24

标签: c# arrays string multidimensional-array

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

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

每种方法的使用指南是什么?

3 个答案:

答案 0 :(得分:6)

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

基本上,差异在于如何分配内存。 [,]表示法将在一个块中分配所有需要的内存,而[] []表示法将分配一个指向数组的指针数组,其中每个数组都是单独分配的,不一定与其他数组相邻

答案 1 :(得分:0)

在你引用的例子中:

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

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

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

答案 2 :(得分:0)

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

另一个重要的区别是,在[] []类型中,您可以定义不同大小的每个“行”。你不能在[,]中做,这是一种矩阵的C#表示。