繁体   English   中英

如何“更改”列表/数组/可枚举中的记录?

[英]How to "change" a record inside a list / array / enumerable?

我有一个不可变的记录列表,我需要“更改”其中一个记录中的值。 这当然意味着创建 object 的副本,更改该值,然后引用新记录而不是列表中的旧记录。

我想知道在 C# 中是否有一些聪明而简洁的方法。 到目前为止,我只想到了一种简单的方法:

  1. 获取更改值的记录副本
  2. 查找列表中记录的索引
  3. 分配新的参考

例如:

var newRecord = oldRecord with { Field = newValue};
var index = list.IndexOf(oldRecord);
list[index] = newRecord;

或者,如果它不是列表而是 Enumerable,则删除一个项目并放置一个新项目,例如

看起来dotnet实际上在System.Collections.Immutable中有许多类。

ImmutableList有一个Replace function 可以满足我的需要。

它也将返回一个新列表,因为列表本身是不可变的,因此如果不希望这样做,则必须实现一个大致相同的扩展方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM