如果要写入(首次读取之前),是否需要初始化局部变量?

时间:2013-01-18 01:42:13

标签: c#

我看到了很多具有以下结构的代码:

public void Blah()
{
    int a = 0;
    string b = "";
    DateTime c = DateTime.MinValue;
    bool d = false;
    // ...More initializations with dummy values

    // Overwrite the values in a, b, c, d, e.g. a = ReturnInt();

    // Do calculations, reading the values from a, b, c, d, like DoCalculations(a);
}

一般来说,我更喜欢这样的东西:

public void Blah()
{
    int a = GetInt();
    string b = GetString();
    DateTime c = GetDateTime();
    bool d = GetBool();

    // Do calculations, reading the values from a, b, c, d, like DoCalculations(a);
}

这是否真的有必要,并且由于额外的初始化会有任何性能命中吗?

2 个答案:

答案 0 :(得分:5)

变量应该在使用前初始化,如果你使用的是read,如果要在初始化后立即覆盖它,那么更好地遵循你所展示的第二种风格出于可读性目的,我预计性能会受到影响(来自样式#1),如果有的话通常是最小的。

答案 1 :(得分:-1)

初始化变量是许多开发人员使用的通用标准。

初始化变量是因为根据语言和环境,读取未初始化的变量可能会产生未定义的行为。并且因为变量可能会或可能不会自动初始化的确切条件很难记住,所以人们倾向于总是在使用它们之前初始化对象。

在构造函数中执行此初始化通常被认为是一种好习惯。

在Scott Meyers的非常受欢迎的书 Effective C ++ 中也特别提及。

  • 第4项:确保在使用对象之前对其进行初始化。