【发布时间】:2013-06-11 11:25:55
【问题描述】:
我有一个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 对象添加到列表中会添加对该对象的引用,因此我可以在列表中对其进行修改(这是实际计划)。
【问题讨论】:
-
myClass的定义是什么?它不是一个真正的结构是吗? (实际上它不可能是结构体,你会得到一个编译错误。但无论如何定义是什么?) -
对不起,我应该说:您的代码应该工作。你能发布一个不起作用的可编译控制台应用程序示例吗?
-
也许是个愚蠢的问题,但如果您的
myClassList2已排序,这意味着myClassList2[0]的项目(可能)与myClassList1[0]的项目不同。你不是在比较myClassList2[0].id和myClassList1[0].id是吗? -
@ChrisSinclair 嗯,我想你可能已经找到答案了。
标签: c# list reference pass-by-reference