【问题标题】:what is the difference between new Object{} and new Object(){} [duplicate]new Object{} 和 new Object(){} 有什么区别 [重复]
【发布时间】:2014-02-10 22:44:42
【问题描述】:

我以这种方式在 C# 中定义类中的对象

var something = new SomeThing()
{
    Property = "SomeProperty"
}

这样

var something = new SomeThing
{
    Property = "SomeProperty"
}

这些定义有什么区别?

【问题讨论】:

  • 没有任何区别。
  • R# 建议删除不必要的括号。
  • @NagarajS 完全不同的问题。
  • @Rotem 没错,另一个是关于匿名类型的。在这种情况下,指定了实际类型。

标签: c#


【解决方案1】:

没有区别。在这种情况下,您可以省略空括号。对于编译器来说,这两者是 100% 等价的。

【讨论】:

    【解决方案2】:

    什么都没有。 () 是多余的。唯一需要的是该对象有一个默认构造函数。

    【讨论】:

      【解决方案3】:

      没有区别。使用函数作为构造函数时,括号是可选的(使用 new 运算符且没有参数)。在不使用 new 运算符时调用函数时始终需要括号。

      【讨论】:

        【解决方案4】:

        你可以省略括号,将使用默认构造函数(假设有一个可用)。

        使用对象初始值设定项时,如果要指定不同的构造函数,只需要使用括号即可。

        Eric Lippert 对为什么括号是可选的原因的看法:https://stackoverflow.com/a/3661197

        【讨论】:

          【解决方案5】:

          什么都没有,当括号为空时。

          它们仅在您提供参数时才有意义;你可以同时这样做:

          var something = new SomeThing("some other value")
          {
              Property = "SomeProperty"
          }
          

          【讨论】:

            猜你喜欢
            • 2012-03-10
            • 2011-08-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-09-23
            • 1970-01-01
            • 2012-12-12
            • 1970-01-01
            相关资源
            最近更新 更多