3

C# 将允许使用 Object() 或 Object{} 创建对象。Object() 和 Object{} 有什么区别

public item getitem()
{

return new item()

}

public item getitem()
{

return new item {}

}
4

3 回答 3

8

这个语法:

new SomeType{}

是一个对象初始化表达式,碰巧没有设置任何属性。它隐式调用无参数构造函数。您可以在大括号内添加属性分配:

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()为了清楚起见而使用。在不设置任何属性的情况下使用对象初始化器很奇怪。

于 2012-07-20T16:06:18.323 回答
6

item()调用默认构造函数,而item {}调用默认构造函数并允许使用(在这种情况下为空)对象初始化器

于 2012-07-20T16:05:35.253 回答
1

new item {}使用对象初始化器。在您的示例中,没有区别,但通常new item()如果您不希望实际使用对象初始化程序,您只需调用即可。

于 2012-07-20T16:06:27.007 回答