我最近看到了这两件事,我有点困惑。
var blah = new MyClass() { Name = "hello" }
和
var blah = new MyClass { Name = "hello" }
有什么区别?为什么它们都有效?
更新: 这是否意味着如果我在构造函数中有一些东西需要调用第一个计算??
最佳答案
据我所知,它们是完全等价的。 C# 规范(或至少是 Microsoft 的实现)允许您在使用默认构造函数(无参数)时省略 (),只要您使用大括号(即 object initialisers 的语法)。请注意,对象初始值设定项对此处的构造函数没有影响 - new MyClass
位仍然被单独解释为对默认构造函数的调用。就个人而言,我建议您始终包含圆括号 () 以保持一致性 - 当您没有对象初始值设定项时,您需要它们。
关于c# - 有没有圆括号?有什么不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/668557/