c#中对象初始化之间的差异

时间:2013-11-18 20:08:07

标签: c#

只是想知道两个对象初始化之间是否有任何区别?

我应该使用哪一个?

有和没有括号()

var data = new Apple()
{
 Color = "red", 
 Taste = "good"
}

var data = new Apple
{
Color = "red", 
Taste = "good"
}

3 个答案:

答案 0 :(得分:7)

当你使用第二种形式时,实际上它是作为第一种形式编译的。第二种形式意味着您要使用无参数构造函数。要小心,因为如果你的类没有任何无参数构造函数你就不能使用它,当然第一种形式也不能使用。

答案 1 :(得分:1)

完全没有区别。他们都会调用无参数构造函数。

他们都变成了:

var data = new Apple();
data.Color = "red";
data.Taste = "good";

编译器。

答案 2 :(得分:0)

无参数构造函数用于保存您的默认错误,例如假设您有参数化构造函数:

public Apple(string color, string taste)
{
data.Color = "red";
data.Taste = "good";
}

有时你/用户可能忘记传递构造函数Apple(x,y)的参数。因此,在类中定义无参数构造函数总是一个好习惯,如:

public Apple()
{
data.Color = "yellow";
data.Taste = "sour";
}

如果忘记使用所需参数值调用构造函数,则将调用默认的无参数构造函数,并将变量初始化为默认值。