如何在没有构造函数的情况下进行对象初始化

本文关键字:情况下 对象 初始化 构造函数 | 更新日期: 2023-09-27 18:34:34

构造函数的目的是在创建此类的对象时初始化所有成员变量。

没有构造函数的对象初始化如何为属性赋值?

Product myProduct = new Product {
ProductID = 100, Name = "Kayak",
Description = "A boat for one person",
Price = 275M, Category = "Watersports"
};

使用构造函数进行对象初始化

Product myProduct = new Product(){
ProductID = 100, Name = "Kayak",
Description = "A boat for one person",
Price = 275M, Category = "Watersports"
};

如何在没有构造函数的情况下进行对象初始化

两个对象创建表达式是等效的。如果未指定() ,则默认情况下会为您提供该。

所以:

var foo = new Foo { X = y };

相当于:

var foo = new Foo() { X = y };

从 C# 5 规范的第 7.6.10.1 节:

对象

创建表达式可以省略构造函数参数列表和括括号,前提是它包含对象初始值设定项或集合初始值设定项。省略构造函数参数列表并括起括号等效于指定空参数列表。

因此,在这两种情况下,您都调用了 Product 的无参数构造函数 - 它由编译器提供,因为您尚未显式声明任何构造函数。同样来自 C# 5 规范,这次是第 10.11.4 节:

如果类不包含实例构造函数声明,则会自动提供默认实例构造函数。该默认构造函数只是调用直接基类的无参数构造函数。如果类是抽象的,则默认构造函数的声明可访问性受到保护。否则,默认构造函数的声明可访问性是公共的。

(这不包括静态类。

相关文章: