圆括号与否?有什么不同?

Sch*_*ime 3 c# asp.net class conventions

我最近看到过这两件事,我有点困惑.

var blah = new MyClass() { Name = "hello" } 
Run Code Online (Sandbox Code Playgroud)

var blah = new MyClass { Name = "hello" } 
Run Code Online (Sandbox Code Playgroud)

有什么不同?为什么他们都工作?

更新: 这是否意味着,如果我在构造函数中有一些东西做了一些计算,我将不得不调用第一个?

Nol*_*rin 15

据我所知,它们完全相同.只要您使用大括号(即对象初始化程序的语法),C#规范(或至少Microsoft的实现)允许您在使用默认构造函数(无参数)时省略().请注意,对象初始值设定项在这里对构造函数没有任何影响 - 该new MyClass位仍然被单独解释为对默认构造函数的调用.就个人而言,我建议您始终包括圆括号()以保持一致性 - 当您没有跟随对象初始化程序时,您需要它们.