JetBrains Rider 2025.2 Help

代码检查:在可能的情况下使用对象或集合初始化器

对象和集合初始化器提供了更简洁的语法。 此外,初始化器在多线程中非常有用。

对象初始化器用于在创建对象时为其属性或字段赋值,而无需调用构造函数。 如果您创建一个对象,然后紧接着为其属性赋值,JetBrains Rider 会建议使用对象初始化器。

在下面的示例中,如果 创建新数据 未使用对象初始化器, 获取当前数据 可能会返回部分初始化的 数据 ,因此 JetBrains Rider 建议使用对象初始化器重写字段赋值语句:

public class DataHandler { private volatile Data _myData; public void CreateNewData() { _myData = new Data(); // warning _myData.Value1 = "Value1"; _myData.Value2 = "Value2"; } public Data GetCurrentData() { return _myData; } } public class Data { public string Value1 { get;set; } public string Value2 { get; set; } }
public class DataHandler { private volatile Data _myData; public void CreateNewData() { _myData = new Data { Value1 = "Value1", Value2 = "Value2" }; } public Data GetCurrentData() { return _myData; } } public class Data { public string Value1 { get;set; } public string Value2 { get; set; } }

如果集合类实现了 IEnumerable 接口 或具有 添加 方法,则可以使用集合初始化器。 如果您创建一个集合,然后立即用项目填充它,JetBrains Rider 会建议使用集合初始化器。

在以下示例中,JetBrains Rider 将 添加 方法的调用替换为集合初始化器:

public void ViewCategories() { var categories = new Dictionary<int, string>(); categories.Add(1, "Books"); categories.Add(2, "Electronics"); foreach (var c in categories) { Console.WriteLine($"{c.Key}, " + $"{c.Value}"); } }
public void ViewCategories() { var categories = new Dictionary<int, string> {{1, "Books"}, {2, "Electronics"}}; foreach (var c in categories) { Console.WriteLine($"{c.Key}, " + $"{c.Value}"); } }

如果您选择禁用此检查,您仍然可以通过 上下文操作 Alt+Enter 将选定的赋值转换为集合初始化器:

JetBrains Rider:将赋值转换为对象初始化器
最后修改日期: 2025年 9月 26日