代码检查:使用 'with' 表达式代替对象初始化器
当普通的对象初始化器可以完成相同任务且无需克隆时,此检查项会报告在新建对象上使用 with 表达式的情况。 如果左侧已经是 new T() 且没有有意义的初始化器,则无需先进行克隆。 普通的对象初始化器更简洁明了。
示例
var item = new Record() with { Value = 42, Name = "test" };
record Record
{
public int Value { get; init; }
public string Name { get; init; }
}
var item = new Record { Value = 42, Name = "test" };
record Record
{
public int Value { get; init; }
public string Name { get; init; }
}
快速修复
将 with 表达式替换为对象初始化器。
2026年 5月 8日