Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这些声明有区别吗?_C#_Jagged Arrays - Fatal编程技术网

C# 这些声明有区别吗?

C# 这些声明有区别吗?,c#,jagged-arrays,C#,Jagged Arrays,这两个都在声明交错列表正确吗 //Declare 'Jagged' List //Version 1 private List<string>[] fieldInfoArray = new List<string>[7]; //Version 2 private List<string>[][] fieldInfoArray = new List<string>[7][]; //声明“锯齿”列表 //版本1 私有列表[]fieldInfoArr

这两个都在声明交错列表正确吗

//Declare 'Jagged' List
//Version 1
private List<string>[] fieldInfoArray = new List<string>[7];

//Version 2
private List<string>[][] fieldInfoArray = new List<string>[7][];
//声明“锯齿”列表
//版本1
私有列表[]fieldInfoArray=新列表[7];
//版本2
私有列表[][]字段信息数组=新列表[7][];
这两个声明没有区别,对吗?他们基本上都在做同一件事,对吗?声明锯齿状列表?

私有列表[]fieldInfoArray=新列表[7];
private List<string>[] fieldInfoArray = new List<string>[7];
这是在声明一个大小为7的数组,其大小为
List

private List[][]字段信息数组=新列表[7][];
这是一个二维数组
列表
,包含7行
列表
数组,这些数组尚未初始化/分配。

  • 两者都声明数组。当您尝试访问任一数组的元素时,将返回
    List
  • 第一个是大小为7的一维数组。所有7个元素都是
    List
    s
  • 第二个数组也是大小为7的一维数组,但这7个元素中的每一个都是另一个“1-D数组”(而不仅仅是“
    List
    ”)

您正在声明两个完全不同的对象。所以,是的,有一个巨大的差异,更具体一点。在我的代码中,它们似乎都声明了一个数组数组(或一个列表列表),但您可能会想一想。@Shammy您不应该根据调试显示的内容来判断这个概念,因为编译器优化了代码。例如,声明一个不使用的变量并在其上设置断点。变量存在,但调试器永远不会在其上运行。@当我使用断点进行调试,并将鼠标悬停在手头的对象(即fieldInfoArray(第一个声明))上时,将保持沉默。它有一个包含8个数组的数组。所以每个人说的都是毫无意义的,或者他们只是不知道你可以这样声明,或者还有其他一些非常奇怪的事情lol@Shammy我创建了一个快速代码示例并进行了测试。我得到了新列表的7个数组[7]。不确定你说的是8个数组。第二个数组是锯齿状数组,不是二维数组。对。我想我还是有个坏习惯,把它们叫做2D数组,因为我仍然认为它们是二维的,即使它们在分配方面可能不会形成一个完美的2D正方形。:)你声称第一个是一维数组,但你有多确定?你真的试过了吗?在我的代码中,它将其视为数组的数组。数组(不要与
数组
类混淆)不是列表对象。它是指向关联内存块的指针。您有一个列表数组。此数组中有7个列表。每个列表对象都有一个模板对象链。在本例中,一个字符串。一个小写的“数组”,是的。还有一个名为
Array
的对象,它不应该与之混淆。矩形数组不是被定义为
Array[3,4]
?这是错误的,我的第一个声明肯定不是单个数组。我可以在调试模式下向您发送它的映像,它是一个数组的数组。这就是为什么我非常困惑的原因。@Shammy你不应该根据调试显示的内容来判断这个概念,因为编译器优化了代码。啊,我继续发布了它,我无法理解它。我试过了too@Shammy关于“声明绝对不是单个数组”和“调试显示它是数组的数组”。实际上,debug将其显示为列表数组。列表基本上是一个数组。这就是为什么它如此令人困惑。
private List<string>[][] fieldInfoArray = new List<string>[7][];