我最近看到过这两件事,我有点困惑.
var blah = new MyClass() { Name = "hello" }
和
var blah = new MyClass { Name = "hello" }
有什么不同?为什么他们都工作?
更新: 这是否意味着,如果我在构造函数中有一些东西做了一些计算,我将不得不调用第一个?
据我所知,它们完全相同.只要您使用大括号(即对象初始化程序的语法),C#规范(或至少Microsoft的实现)允许您在使用默认构造函数(无参数)时省略().请注意,对象初始值设定项在这里对构造函数没有任何影响 - 该new MyClass
位仍然被单独解释为对默认构造函数的调用.就个人而言,我建议您始终包括圆括号()以保持一致性 - 当您没有跟随对象初始化程序时,您需要它们.