我有代码:
Foo f1 = new Foo();
Foo f2 = new Foo();
List<Foo> list = new List<Foo>() { f1 };
// ...
Foo f = list[0];
f = f2; // <===
Console.WriteLine((list[0] == f));
最后一行显示&#34; false&#34;。但我想要改变列表[0]&#39;通过改变&#39; f&#39;变量(不是直接列表[0])(行&#39;&lt; ===&#39;)。可能是,我需要使用指针(例如在&amp; list [0]地址中创建新对象)?
答案 0 :(得分:2)
我希望通过更改
list[0]
变量(而不是直接f
)来更改list[0]
这是不可能的。集合list
由指向对象的指针组成,变量f1
,f2
和f
都是指向对象的指针。
通过更改f
的指针,您不会自动更改碰巧指向同一对象的集合中保存的指针。
顺便说一下,这种行为是件好事。