如果要将局部变量写入(在第一次读取之前),则需要对其进行初始化
本文关键字:初始化 局部变量 读取 第一次 如果 | 更新日期: 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条:确保对象在使用之前被初始化。