如果要将局部变量写入(在第一次读取之前),则需要对其进行初始化

本文关键字:初始化 局部变量 读取 第一次 如果 | 更新日期: 2023-09-27 17:54:17

我看到很多代码都是这样的结构:

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);
}

这真的有必要吗?额外的初始化是否会对性能造成影响?

如果要将局部变量写入(在第一次读取之前),则需要对其进行初始化

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

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

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

通常认为在构造函数中执行此初始化是一种良好的做法。

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

  • 第4条:确保对象在使用之前被初始化。