【问题标题】:Difference between class initializers in C#? [duplicate]C# 中的类初始化器之间的区别? [复制]
【发布时间】:2011-09-12 16:53:48
【问题描述】:

可能重复:
Why are C# 3.0 object initializer constructor parentheses optional?

使用实例化对象有什么区别

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

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

【问题讨论】:

  • 你需要一个新的关键字吗?

标签: c# .net class object instantiation


【解决方案1】:

除了语法没有区别,你仍然调用无参数构造函数。

【讨论】:

    【解决方案2】:

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

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

    Why are C# 3.0 object initializer constructor parentheses optional?

    还有 Eric Lippert 的精彩博文:

    Ambiguous Optional Parentheses, Part One

    【讨论】:

      【解决方案3】:

      简短的回答:没有。 () 如果你想传入一些构造函数参数,但可以使用 在你的情况下,因为你没有,你可以跳过()

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

        Foo foo = new Foo(someBar){Prop1 = "value1", Prop2 = value2};
      

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

        Foo foo = new Foo {Prop1 = "value1", Prop2 = value2};
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-11
        • 2013-12-02
        • 1970-01-01
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多