gpt4 book ai didi

c# - 在 C# 中更新 List 中结构的属性

转载 作者:太空狗 更新时间:2023-10-29 23:32:02 25 4
gpt4 key购买 nike

我有一个 List<Cat>其中 Catstruct具有 ID 和名称。

如何更改 id 为 7 的猫的名字?

我做了(不假思索)

var myCat = catList.Single(c => c.Id == 7);

mycat.Name = "Dr Fluffykins";

当然,结构是值类型。那么是否可以使用这样的技术,或者我必须更改 .Single进入for循环并存储索引以用更新的结构替换它?

最佳答案

struct s 是值类型,因为值类型被复制,myCat以列表中 cat 的副本结束。您需要对 struct 进行操作本身,而不是它的副本。

此外,您可以修改struct的字段仅当它们是单个变量或数组的一部分时才直接使用 s。 List<T>的索引器返回一个副本,因此 C# 编译器会产生“无法修改值类型”错误。

我知道的唯一解决方案(除了制作 Catclassre-assigning a modified copy )是制作 catList一个数组:

var indexOf = catArray
.Select((Cat, Index) => new {Cat, Index})
.Single(p => p.Cat.Id == 7).Index;
catArray[indexOf].Name = "Dr Fluffykins";

关于c# - 在 C# 中更新 List 中结构的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17657578/

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