代码检查:使用 '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日