可能重复:
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 };
使用括号的实例与没有括号的实例之间是否有任何差异?
答案 0 :(得分:2)
使用括号的实例与没有括号的实例之间是否有任何差异?
没有
如果使用ReSharper,它会将第二个构造标记为冗余括号,并建议您删除它们。然而,这只是一种风格问题。
答案 1 :(得分:1)
使用括号的实例之间是否存在任何差异? 另一个没有括号?
是,
第一个是对默认构造函数的隐式调用,第二个是显式调用。
虽然功能相同,但编译器会以不同的方式看待它们。