C#中类初始值设定项的区别?

kav*_*vun 7 .net c# class object instantiation

可能重复:
为什么C#3.0对象初始化器构造函数括号是可选的?

使用对一个对象进行实例化有什么区别

classInstance = new Class() { prop1 = "", prop2 = "" };

classInstance = new Class { prop1 = "", prop2 = "" };

Bal*_*a R 6

简短回答:没什么.()如果你想传递一些构造函数args ,可以使用它,但在你的情况下,因为你没有,你可以跳过().

例如.()在这里很有用.

  Foo foo = new Foo(someBar){Prop1 = "value1", Prop2 = value2};
Run Code Online (Sandbox Code Playgroud)

但如果你试图调用无参数构造函数,它是可选的

  Foo foo = new Foo {Prop1 = "value1", Prop2 = value2};
Run Code Online (Sandbox Code Playgroud)


Las*_*olt 4

没有什么。第二个只是第一个的捷径。第一个允许您将参数包含到构造函数中。因此,如果类没有空构造函数,则不能使用快捷方式。

\n\n

您可能对这个问题感兴趣:

\n\n

为什么 C# 3.0 对象初始值设定项构造函数括号是可选的?

\n\n

Eric Lippert\xc2\xb4s 很棒的博客文章:

\n\n

不明确的可选括号,第一部分

\n