C#将允许使用Object()或Object {}创建对象。与Object()和Object {}
有什么区别public item getitem()
{
return new item()
}
public item getitem()
{
return new item {}
}
答案 0 :(得分:8)
此语法:
new SomeType{}
是object initializer expression,碰巧没有设置任何属性。它隐式调用无参数构造函数。您可以在大括号中添加属性分配:
new SomeType { Name = "Jon" }
此语法:
new SomeType()
只是对无参数构造函数的调用,没有机会设置属性。
请注意,您也可以显式使用对象初始值设定程序调用构造函数(无论是否为参数):
// Explicit parameterless constructor call
new SomeType() { Name = "Jon" }
// Call to constructor with parameters
new SomeType("Jon") { Age = 36 }
有关对象初始值设定项的更多详细信息,请参阅C#4规范的7.6.10.2节。
我强烈建议您如果不设置任何属性,则只需使用new SomeType()
即可。在没有设置任何属性的情况下使用对象初始值设定器很奇怪。
答案 1 :(得分:6)
item()
调用默认构造函数,而item {}
调用默认构造函数并允许使用(在本例中为空)object initializer。
答案 2 :(得分:1)
new item {}
使用object initializer。在您的示例中,没有区别,但如果您不希望实际使用对象初始值设定项,通常只需调用new item()
。