在 C# 3.0 中,微软引入了一个非常实用的语法特性——对象初始化器(Object Initializer)。它允许我们在创建对象时,直接对对象中所有可访问的字段和属性进行初始化赋值。
具体来说,在调用构造函数创建对象之后,我们可以紧跟一对大括号,在其中添加一个成员初始化列表。列表中的每一项都是一个赋值操作:等号左边是允许访问的字段或属性,等号右边则是要赋的具体值。
一、传统方式创建对象
假设我们有一个Student类,需要创建一个学生对象并为其属性赋值。在对象初始化器出现之前,通常是这样实现的:
Student stu = new Student(); stu.Name = "张三"; stu.Sex = "男"; stu.Age = 25;这种写法虽然直观,但当属性较多时,代码会显得冗长,而且对象创建与属性赋值被拆成了多行,逻辑上不够紧凑。
二、使用对象初始化器
借助对象初始化器,我们可以把上面的代码简化为一行:
Student stu = new Student { Name = "张三", Sex = "男", Age = 25 };这段代码与前面的传统写法功能完全一致,但更加简洁、易读,对象的创建和初始化被集中在一处,意图一目了然。
三、使用要点与注意事项
- 语法格式:
new 类型名 { 属性1 = 值1, 属性2 = 值2, ... },大括号内用逗号分隔各个成员赋值。 - 可访问性:只能初始化允许访问的字段和属性,私有成员无法在初始化器中赋值。
- 执行顺序:先调用构造函数,再按书写顺序执行初始化列表中的赋值操作。
- 类型匹配:赋值的类型必须与属性或字段的类型兼容,例如
Age为int类型时应直接写25,而不是字符串"25"。 - 与匿名类型区分:对象初始化器需要写
new Student { ... },而匿名类型是new { ... },两者不要混淆。
四、总结
对象初始化器是 C# 3.0 带来的语法糖之一,它让对象创建与属性赋值合二为一,显著提升了代码的可读性和编写效率。在日常开发中,凡是需要在创建对象的同时设置多个属性的场景,都可以优先考虑使用它。