小编Joh*_*let的帖子

使用 C# 9 记录“with”表达式可以复制并添加到新的派生实例吗?

假设我有以下内容:

public record Settings 
{
  public int Setting1 { get; init; }
}

public record MoreSettings : Settings
{
  public string Setting2 { get; init; }
}
...

var settings = new Settings { Setting1 = 1 };

// This is an error - CS0117
MoreSettings moreSettings = settings with { Setting2 = "A string setting" };
Run Code Online (Sandbox Code Playgroud)

有没有一种干净的方法来实现这一目标?我的语法错误吗?
显然,在这种人为的情况下,我可以手动复制每个基本属性。

var moreSettings = new MoreSettings { Setting1 = settings.Setting1, Setting2 = "A String!" };
Run Code Online (Sandbox Code Playgroud)

但是如果基本记录类型有很多属性呢?

c#-9.0

2
推荐指数
1
解决办法
516
查看次数

标签 统计

c#-9.0 ×1