C# 列表中的对象关系?
现在,我知道这可能是个新手问题,但我总是搞砸 我有一个包含一组对象的列表,但在我的代码后面,我查询该列表以使用LINQ修改其中一个对象C# 列表中的对象关系?,c#,list,C#,List,现在,我知道这可能是个新手问题,但我总是搞砸 我有一个包含一组对象的列表,但在我的代码后面,我查询该列表以使用LINQ修改其中一个对象 这是否也会更新列表中的对象,或者我必须从列表中删除对象的旧实例,然后将我拉出的对象放回列表中,以确保更改的值存储在列表中?该列表只是一个简单的列表。.NET的内置列表包含对元素的引用 因此,如果你说: var mySomething = myList[3]; 然后 mySomething.Value = 19; 那你会看到的 myList[3].Value
这是否也会更新列表中的对象,或者我必须从列表中删除对象的旧实例,然后将我拉出的对象放回列表中,以确保更改的值存储在列表中?该列表只是一个简单的
列表
。.NET的内置列表包含对元素的引用
因此,如果你说:
var mySomething = myList[3];
然后
mySomething.Value = 19;
那你会看到的
myList[3].Value == 19
需要记住的重要一点是,列表不包含对象。它包含对对象的引用。因此,如果你这样做:
List<Foo> foos = GetListOfFooFromSomewhere();
Foo foo = foos[0];
foo.Name = "Some other name";
listfoos=getlistoffoofromwhere();
Foo-Foo=foos[0];
foo.Name=“其他名称”;
只涉及一个Foo
对象,但是列表和局部变量都引用了同一个对象。对对象的更改不需要“传播”到列表中,因为列表首先没有该数据
我有时会用这样一个比喻:如果我在纸上给两个人我的家庭地址,其中一个人把我的前门漆成红色,那么如果另一个人去我家,他们会看到一扇红色的前门。这些纸是不同的,但它们不包含“我的房子”——它们只包含一种到我家的方式。只有一所房子
(顺便说一下,这是假设Foo
是一个类。如果您有一个可变结构列表,那么该列表实际上直接包含数据,而不是引用。我个人会避免从可变结构开始。)