Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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 - Fatal编程技术网

C# 列表中的对象关系?

C# 列表中的对象关系?,c#,list,C#,List,现在,我知道这可能是个新手问题,但我总是搞砸 我有一个包含一组对象的列表,但在我的代码后面,我查询该列表以使用LINQ修改其中一个对象 这是否也会更新列表中的对象,或者我必须从列表中删除对象的旧实例,然后将我拉出的对象放回列表中,以确保更改的值存储在列表中?该列表只是一个简单的列表。.NET的内置列表包含对元素的引用 因此,如果你说: var mySomething = myList[3]; 然后 mySomething.Value = 19; 那你会看到的 myList[3].Value

现在,我知道这可能是个新手问题,但我总是搞砸

我有一个包含一组对象的列表,但在我的代码后面,我查询该列表以使用LINQ修改其中一个对象


这是否也会更新列表中的对象,或者我必须从列表中删除对象的旧实例,然后将我拉出的对象放回列表中,以确保更改的值存储在列表中?该列表只是一个简单的
列表

。.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
是一个类。如果您有一个可变结构列表,那么该列表实际上直接包含数据,而不是引用。我个人会避免从可变结构开始。)