我有一个myClass
个对象列表(之前添加了一些元素)
List<myClass> myClassList1;
然后我将此列表中的一些元素复制到另一个列表中
List<myClass> myClassList2 = new List<myClass>();
foreach (myClass obj in myClassList1)
{
myClassList2.Add(obj);
}
此列表现已排序
myClassList2.sort();
然后我想修改此排序列表中的第一个元素
myClassList2[0].id++;
问题:在myClassList2
中,此元素已修改,但未在myClassList1
中修改。
我认为将myClass
个对象添加到列表中会添加对该对象的引用,因此我可以在列表中修改它(这是实际的计划)。
答案 0 :(得分:0)
它会像您期望的那样更新myClassList1。您可能想发布您的代码。这是我更新两个列表的代码。
public class myClass
{
int _id;
public myClass(int id)
{
Id = id;
}
public int Id
{
get
{
return _id;
}
set
{
_id = value;
}
}
}
public void BuildList()
{
List<myClass> myClassList1 = new List<myClass>();
myClassList1.Add(new myClass(8));
myClassList1.Add(new myClass(4));
myClassList1.Add(new myClass(10));
myClassList1.Add(new myClass(1)); // This would become the first item when the list is sorted.
myClassList1.Add(new myClass(30));
List<myClass> myClassList2 = new List<myClass>();
foreach (myClass obj in myClassList1)
{
myClassList2.Add(obj);
}
myClassList2.Sort((s1, s2) => s1.Id.CompareTo(s2.Id)); // Sort by Id.
// Modify the first element in the second sorted list.
myClass firstElementList2 = myClassList2[0];
firstElementList2.Id++;
int valueInList2 = firstElementList2.Id; // Get the id that is incremented
// Find the same object in first list...
myClass sameElementInList1 = myClassList1.Find(x => x.Id.Equals(valueInList2));
int valueInList1 = sameElementInList1.Id;
if (valueInList2== valueInList1)
{
MessageBox.Show("Cheers!");
}
}
测试:
[TestMethod]
public void SKTestMethod()
{
Class1 c1 = new Class1();
c1.BuildList();
}