2

类构造函数是设置变量默认值的最佳位置吗?

在我继承的大多数代码中似乎都是这种情况。

例子

public class foo
{
    public bool IsAcidic { get; set; }

    public foo()
    {
        IsAcidic = false;
    }
}

你会这样做吗?

4

2 回答 2

4

如果您想为该特定对象的任何实例分配一些默认值,那么是的,构造函数是为它们分配默认值的最合适的地方,但是如果您想将类型的默认值分配给该字段,那么您不需要必须做任何事情。字段将在构造函数之前使用类型的默认值进行初始化。例如,如果您有一个int类型字段,它将0默认分配,您不必在构造函数中执行任何操作。

于 2012-09-11T07:52:59.737 回答
0

您应该将变量设置为尽可能接近创建该变量的值(显式或隐式)。

这就是 C99(作为一个例子)开始大放异彩的地方。在那之前,您必须在函数的开头创建变量,即使您当时可能不知道它们应该是什么。通过这种脱节,更难跟踪哪些变量被设置为哪些值。当 C99 引入了在函数中创建新变量的能力时,这种脱节就消失了。

因此,对于您的示例,最好在构造函数中设置默认值,因为这是变量存在的地方。

如果您不在构造函数中执行此操作(例如,在init方法调用中执行),那么这不是默认值,仅仅是因为有时这些变量被设置为其他值。

于 2012-09-11T07:58:42.700 回答