从列表中读取数据==“;data1”;,但我要求改变“;data1”;至>";list1data1”;它将其
本文关键字:data1 gt quot list1data1 改变 读取 列表 数据 我要 | 更新日期: 2023-09-27 18:00:34
很抱歉标题含糊不清,我不知道如何用一句话来解释这个问题。我希望你在查看我的代码时能理解这个问题。
我用一种非常奇怪的方法填写了两个列表(list1和list2)。List1和List2是2D列表。两个列表的计数都是4(我对此进行了测试)。列表的第一个索引都已填充,并包含下一个数据:data1、data2、data3、data4(我对此进行了测试)。所以:[0][0]
包含"data1" && [0][1]
包含"data2" && [0][2]
包含"data3" && [0][3]
包含"data4"。两个列表的!!!现在,当我检查lists[x][0]
是否包含"datax"时,如果是:更改[x][0]
的名称。这在列表1中有效,但在列表2中无效。
for (int i = 0; i < wholeList.Count; i++)
{
if (wholeList[i] < someclass.otherlist1.Count) //wholeList[i] are numbers given
//by the user, can be betwen 0-7 (0-3 for list1 4-7 for list2)
{
list1.Add(someclass.otherlist1[wholeList[i]]);
}
else
{
list2.Add(someclass.otherlist2[wholeList[i]-someclass.otherlist2.Count]);
}
}
for (int i = 0; i < list1.Count; i++)
{
Console.WriteLine(list1[i][0]); //outcome is:
//data 1
//data 2
//data 3
//data 4
}
for (int i = 0; i < list2.Count; i++)
{
Console.WriteLine(list2[i][0]); //outcome is:
//data 1
//data 2
//data 3
//data 4
}
for (int i = 0; i < list1.Count;i++ )
{
Console.WriteLine("test list 1");
if (list1[i][0].ToUpper().Contains("data 1".ToUpper()) || list1[i][0].ToUpper().Contains("data 2".ToUpper()))
{
list1[i][0] = "LIST1DATA1-2";
}
else if (list1[i][0].ToUpper().Contains("data 3".ToUpper()) || list1[i][0].ToUpper().Contains("data 4".ToUpper()))
{
list1[i][0] = "LIST1DATA3-4";
}
}
for (int i = 0; i < list2.Count; i++)
{
Console.WriteLine("test list 2");
if (list2[i][0].ToUpper().Contains("data 1".ToUpper()) || list2[i][0].ToUpper().Contains("data 2".ToUpper()))
{
list2[i][0] = "LIST2DATA1-2";
}
else if (list2[i][0].ToUpper().Contains("data 3".ToUpper()) || list2[i][0].ToUpper().Contains("data 4".ToUpper()))
{
list2[i][0] = "LIST2DATA3-4";
}
else
{
Console.WriteLine("wtf"); //why it always prints this????
}
}
for (int i = 0; i < list1.Count; i++)
{
Console.WriteLine(list1[i][0]);
}
for (int i = 0; i < list2.Count; i++)
{
Console.WriteLine(list2[i][0]);
}
//outcome above is:
//LIST2DATA1-2
//LIST2DATA1-2
//LIST2DATA3-4
//LIST2DATA3-4
//wtf
//wtf
//wtf
//wtf
这怎么可能????
另外,当我不在list1[0][0]
中添加"data1"
时。它确实打印了list2data1-2
。
您可能引用了具有两个不同名称(list1
和list2
)的同一列表,或者您实际上有两个不同的列表,但都引用了相同的值。因此,当您第一次更改list1
中的值时,也会更改list2
。如果两个变量引用同一对象,您可以通过以下方式进行检查:
object.ReferenceEquals(list1, list2);
如果返回false,也可以尝试
object.ReferenceEquals(list1[0], list2[0]);
和
object.ReferenceEquals(list1[0][0], list2[0][0]);