【问题标题】:Difference Between object initializations in c# [duplicate]c#中对象初始化之间的区别[重复]
【发布时间】:2013-12-02 03:17:41
【问题描述】:

只是想知道这两个对象初始化有什么区别吗??

我应该使用哪一个??

带括号和不带括号()

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

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

【问题讨论】:

  • 完全相同答案的风暴来了
  • @DamonGant 你是巫师吗?
  • 所有你想知道的(以及更多)都可以在 [这里][1] [1] 找到:stackoverflow.com/a/3661197/2779990

标签: c#


【解决方案1】:

无参数构造函数用于将你从默认错误中拯救出来,例如假设你有参数化构造函数:

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

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

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

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

【讨论】:

  • 如果你的类有合理的默认值,最好提供一个无参数的构造函数。但这距离它始终成为一个好习惯还有很长的路要走。在很多情况下你不应该有一个无参数的构造函数,所以我会谨慎地推荐它“总是好的”。
【解决方案2】:

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

【讨论】:

  • +1,对于无参数构造函数,绝对是更好的答案。
【解决方案3】:

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

他们都变成了:

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

由编译器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2015-05-27
    • 2014-07-26
    相关资源
    最近更新 更多