【发布时间】:2020-11-14 15:01:43
【问题描述】:
我已经看到了 C# 9.0 中新记录功能的几个示例。即,能够更新单个属性以创建新的不可变记录。我很想知道with 语法是否允许我将新条目插入到字典之类的东西中,从而创建一个新的不可变字典以及构成记录的所有兄弟属性。
例如,我可以这样做吗?
public record Person
{
public string Name;
}
public record Car
{
public string Model;
public Dictionary<string, Person> Riders;
}
var car = new Car
{
Model = "Delorean",
Riders = ("driver", new Person { Name = "Doc Brown" })
};
var newCar = car with
{
Riders with ("passenger1", new Person { Name = "Marty McFly" })
};
【问题讨论】:
-
FWIW 我认为这是一个有效的问题,但答案是“不是真的”。您也许可以考虑不可变集合 API,其中 Add 等是函数而不是方法(意思是:它们返回不同的集合,它们不会更改现有集合)
-
你能解释一下你上面使用的类似元组的语法吗?它对我来说似乎不是有效的 C#,即使在 C# 9 中也是如此。我错过了什么吗?
标签: c# .net data-structures immutability