C# 在C语言中,字符串[]和字符串[],]之间有什么区别#

C# 在C语言中,字符串[]和字符串[],]之间有什么区别#,c#,arrays,string,multidimensional-array,C#,Arrays,String,Multidimensional Array,语法略有不同,但它们之间的区别是什么 public static string[][] str1 = { new string[] { Total, "N2" }}; public static string[,] str2 = { { Total, "N2" } }; 每种方法的使用指南是什么?请看这里: 基本上,区别在于如何分配内存。 [,]表示法将在一个块中分配所有所需的内存,而[]表示法将为数组分配一个指针数组,其中每个数组单独分配,不一定紧挨着其他数组在您引用的示例中: publ

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

public static string[][] str1 = { new string[] { Total, "N2" }};
public static string[,] str2 = { { Total, "N2" } }; 
每种方法的使用指南是什么?

请看这里:

基本上,区别在于如何分配内存。
[,]表示法将在一个块中分配所有所需的内存,而[]表示法将为数组分配一个指针数组,其中每个数组单独分配,不一定紧挨着其他数组在您引用的示例中:

public static string[][] str1 = { new string[] { Total, "N2" }};
public static string[,] str2 = { { Total, "N2" } };
第一个是数组的数组(锯齿数组)。每个条目都可以指向一个字符串数组


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

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

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

第一个是“锯齿状”——一个数组引用数组的数组。看看这个。同时检查“指向数组的指针数组”——这取决于它的使用方式——元素可能是什么。此外,在c#中,“指针”一词并不常用,也不应成为参考的同义词。""