通过()和没有括号创建对象的实例之间的区别

时间:2012-06-17 06:10:04

标签: c# c#-4.0

  

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

假设这是我的自定义对象:

public class MyObject {
    public string Name { get; set; }
    public int number { get; set; }

    public MyObject() {

    }
}

这个对象可以定义泛型,或者使用自定义构造函数和更多元素,因此我们可以用两个语法创建一个实例并设置属性

MyObject newObj1 = new MyObject { Name = "MyName", number = 10 };
MyObject newObj2 = new MyObject() { Name = "MyName", number = 10 };

使用括号的实例与没有括号的实例之间是否有任何差异?

2 个答案:

答案 0 :(得分:2)

  

使用括号的实例与没有括号的实例之间是否有任何差异?

没有

如果使用ReSharper,它会将第二个构造标记为冗余括号,并建议您删除它们。然而,这只是一种风格问题。

答案 1 :(得分:1)

  

使用括号的实例之间是否存在任何差异?   另一个没有括号?

是,

第一个是对默认构造函数的隐式调用,第二个是显式调用。

虽然功能相同,但编译器会以不同的方式看待它们。

相关问题