关于List存值得问题

OrdinaryCoder 码农  2019-03-25 10:27:38

static void Main(string[] args)
{
List<TestClass> list = new List<TestClass>();
list.Add(new TestClass(1));
list.Add(new TestClass(2));
list.Add(new TestClass(3));
list.Add(new TestClass(4));

var test = list.SingleOrDefault(x=>x.a == 3);
Console.WriteLine("test的Hash码:{0}", test.GetHashCode());
Console.WriteLine("list[2]的Hash码:{0}", list[2].GetHashCode());
test = new TestClass(1024);
Console.WriteLine("test的Hash码:{0}", test.GetHashCode());
Console.WriteLine("list[2]的Hash码:{0}", list[2].GetHashCode());

}


list[2]中到底存的是什么,为什么改变test的引用list[2]没有变
...全文
92 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
OrdinaryCoder 2019-03-25
引用 4 楼 stherix 的回复:
[quote=引用 3 楼 OrdinaryCoder 的回复:]
list[2]指向的还是原对象


是的,就像c++多个指针 指向同一个地址,但是其中一个指向的地址变了,并不会影响其他的[/quote]
谢谢,明白了。
回复
stherix 2019-03-25
引用 3 楼 OrdinaryCoder 的回复:
list[2]指向的还是原对象
是的,就像c++多个指针 指向同一个地址,但是其中一个指向的地址变了,并不会影响其他的
回复
OrdinaryCoder 2019-03-25
list[2]指向的还是原对象
回复
OrdinaryCoder 2019-03-25
引用 1 楼 stherix 的回复:
var test = list.SingleOrDefault(x=>x.a == 3);
这个时候 test的确是list[2]同引用
但是test = new TestClass(1024);
你都给test赋了个新值
test的引用已经改了,list[2]还是原来的对象引用

谢谢,大致明白了,test = new TestClass(1024);这步并没有改变原来对象的内存,只不过哦是将引用指向改变了,这么理解没错吧。
回复
stherix 2019-03-25
var test = list.SingleOrDefault(x=>x.a == 3); 这个时候 test的确是list[2]同引用 但是test = new TestClass(1024); 你都给test赋了个新值 test的引用已经改了,list[2]还是原来的对象引用
回复
相关推荐
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2019-03-25 10:27
社区公告

让您成为最强悍的C#开发者