簡體   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