gpt4 book ai didi

c# - 如何更新 C# HashSet 中的对象?

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:18 24 4
gpt4 key购买 nike

我正在尝试用不同的对象更新 HashSet 中的对象。在下面的代码示例中,为什么没有更新 person2 对象?

HashSet<Person> myHash = new HashSet<Person>();

//populate the HashSet with two Person objects
var person1 = new Person() { Id=1, Name = "John", Age = 21};
var person2 = new Person() { Id=2, Name = "Lisa", Age = 25 };
myHash.Add(person1);
myHash.Add(person2);

var person2Updated = new Person() { Id = 2, Name = "LisaUpdated", Age = 25 };
var existingPerson2 = myHash.SingleOrDefault(p => p.Id == 2);
existingPerson2 = person2Updated;

//why isn't the following returning person with Name "LisaUpdated"?
//It is actually returning person with Name "Lisa"
var test = myHash.SingleOrDefault(p => p.Id == 2);

最佳答案

您正在做的是将 existingPerson2 的引用替换为另一个 person2Updated

您没有更改HashSet 引用

做你想做的,你必须从哈希集中删除它然后添加新的

        myHash.Remove(existingPerson2);
myHash.Add(person2Updated);

或者如果你只想更新名字,你可以这样做

        existingPerson2.Name = person2Updated.Name

关于c# - 如何更新 C# HashSet 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33712701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com