Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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#_List_Arraylist_Unity Container - Fatal编程技术网

C# 无法在列表/阵列列表中创建阵列

C# 无法在列表/阵列列表中创建阵列,c#,list,arraylist,unity-container,C#,List,Arraylist,Unity Container,我需要在arraylist或列表中创建数组,我使用了以下方法: List<string[]> OL = new List<string[]>(); string[] OLdata = new string[7]; OLdata[0] = .. ; OLdata[1] = .. OLdata[6] = .. OL.Add(OLdata); 当我尝试使用访问数据时,再次写入OLdata并将其添加到OL列表中 OL[0][3] .. 我正在获取插入数组中的新数据,

我需要在arraylist或列表中创建数组,我使用了以下方法:

List<string[]> OL = new List<string[]>();
string[] OLdata = new string[7];

OLdata[0] = .. ; OLdata[1] = .. OLdata[6] = ..
OL.Add(OLdata);
当我尝试使用访问数据时,再次写入OLdata并将其添加到OL列表中

    OL[0][3] ..

我正在获取插入数组中的新数据,我显然希望在OL[0][3]OL[1][3]中有不同的值,这是什么原因或任何其他建议???

数组是引用类型,所以您实际上所做的只是多次修改并添加同一数组对象

您可能应该这样做,每次创建并填充一个新数组:

var olData = new string[7];  // create first array
olData[0] = ...  // etc
ol.Add(olData);  // add first array

olData = new string[7];  // create second array
olData[0] = ...  // etc
ol.Add(olData);  // add second array

// ...

数组是引用类型,所以您实际上所做的只是多次修改并添加相同的数组对象

您可能应该这样做,每次创建并填充一个新数组:

var olData = new string[7];  // create first array
olData[0] = ...  // etc
ol.Add(olData);  // add first array

olData = new string[7];  // create second array
olData[0] = ...  // etc
ol.Add(olData);  // add second array

// ...

添加第二个字符串数组时,是否正在创建新字符串[7]

例如

List OL=new List();
字符串[]旧数据=新字符串[7];
OL[0]=;OL[1]=。。OL[6]=。。
OL.添加(旧数据);
OLdata=新字符串[7];
OL[0]=;OL[1]=。。OL[6]=。。
OL.添加(旧数据);

添加第二个字符串数组时,是否正在创建新字符串[7]

例如

List OL=new List();
字符串[]旧数据=新字符串[7];
OL[0]=;OL[1]=。。OL[6]=。。
OL.添加(旧数据);
OLdata=新字符串[7];
OL[0]=;OL[1]=。。OL[6]=。。
OL.添加(旧数据);

当您第二次写入OLdata时,您是如何做到的?在您的代码中,您没有添加第二个数组。老实说,因为我没有看到第二个
Add
语句,所以我认为以这种方式访问
OL[1][3]
应该会引发异常。如果你刚刚添加了两次OLdata,那么我将不得不+1@LukeH的答案。我认为你的问题有错误<代码>OL[0]=。。;OL[1]=…应为
OLdata[0]=。。。;OLdata[1]=…
当您第二次写入OLdata时,如何执行?在您的代码中,您没有添加第二个数组。老实说,因为我没有看到第二个
Add
语句,所以我认为以这种方式访问
OL[1][3]
应该会引发异常。如果你刚刚添加了两次OLdata,那么我将不得不+1@LukeH的答案。我认为你的问题有错误<代码>OL[0]=。。;OL[1]=…应为
OLdata[0]=。。。;OLdata[1]=…
o是..有什么解决方案吗?@Rony每次你想在列表中添加一个新项目时,都需要调用OLdata上的“new”。+1-我在他的描述中看到,他只是将同一对象添加为第二个元素。他可能也对自己的新加入也出现在OL[0]中感到惊讶。我认为这真的不应该发生。听起来他真的应该将集合作为类的属性,并将引用作为该类的集合。是的..有什么解决方案吗?@Rony每次需要列表中的新项时,都需要调用olData上的“new”。+1-我在他的描述中看到,他只是将同一对象添加为第二个元素。他可能也对自己的新加入也出现在OL[0]中感到惊讶。我认为这真的不应该发生。听起来他真的应该将集合作为类的属性,并将引用作为该类的集合。
List<string[]> OL = new List<string[]>();
string[] OLdata = new string[7];

OL[0] = .. ; OL[1] = .. OL[6] = ..
OL.Add(OLdata);

OLdata = new string[7];

OL[0] = .. ; OL[1] = .. OL[6] = ..
OL.Add(OLdata);