C#初始化列表 - 什么时候使用()运算符后的类名?

Yec*_*kiy 5 c# initializer-list

有时在类名后面指定初始化列表而不使用()运算符:

Cat cat = new Cat { Age = 10, Name = "Fluffy" }
Run Code Online (Sandbox Code Playgroud)

其他时候在()运算符后指定:

List<Cat> cats = new List<Cat>
    {
        new Cat(){ Name = "Sylvester", Age=8 }
    }
Run Code Online (Sandbox Code Playgroud)

我假设差异是因为这里新的Cat()在列表中.但我仍然不明白为什么它应该是不同的.那么为什么不同,何时使用哪种语法?

谢谢.

use*_*061 6

使用初始化列表时,可以在使用无参数构造函数时省略().新的Cat()是否在列表中并不重要.


Ode*_*ded 6

必须指定()何时没有默认(无参数)构造函数 - 何时必须提供参数.

当类具有默认构造函数(或无参数构造函数)时,您始终可以省略()使用初始化程序的时间.编译器为您提供了魔力,您可以将事物视为 - 编译器为您插入它们.