使用整数?作为成员变量与局部变量
Using int? as a member variable vs. a local variable
可能是一个非常快速的解决方法,但我正在 Visual Studio 中进行一个项目,其中程序读取数字的文本文件,然后为它们计算某些统计数据。
我原来初始化了两个成员变量分别代表minimum和maximum。
private int? mMax;
private int? mMin;
然后该方法会将文件中的当前数字与那些成员变量进行比较,并相应地进行更改。但是,我需要能够检查这些是否为空。我不能简单地将它们设置为默认值 0,因为还涉及负数。
这是我的实现,
int a = //current number in the file
if (mMax == null && mMin == null)
{
mMax = a;
mMin = a;
}
else
{
//compare and assign min & max accordingly
}
这一切都很好,很花哨,直到我意识到最终用户在完成第一个文件后可以通过方法主体 运行 另一个文件。这意味着成员变量已经从方法的第一个 运行 开始设置。
因此,我没有创建 min 和 max 成员变量,而是将它们设为方法范围内的简单变量。
然而,当运行宁此代码时:
int? max;
int? min;
if (max == null && min == null)
{
...
}
我收到错误 "Use of unassigned local variable 'max' and 'min' "。
谁能告诉我为什么会这样?
我打算取消分配这些变量,但显然我这样做有问题。为什么它作为成员变量而不是局部变量完全正常工作?
试试这个
int? mMax = null;
int? mMin = null;
你可以试试这个:
int? max = null;
int? min = null;
Why are you getting this compilation error.
it attempts to use the variable a before it is assigned a value. The rules governing definite assignment are defined in here.
可能是一个非常快速的解决方法,但我正在 Visual Studio 中进行一个项目,其中程序读取数字的文本文件,然后为它们计算某些统计数据。
我原来初始化了两个成员变量分别代表minimum和maximum。
private int? mMax;
private int? mMin;
然后该方法会将文件中的当前数字与那些成员变量进行比较,并相应地进行更改。但是,我需要能够检查这些是否为空。我不能简单地将它们设置为默认值 0,因为还涉及负数。
这是我的实现,
int a = //current number in the file
if (mMax == null && mMin == null)
{
mMax = a;
mMin = a;
}
else
{
//compare and assign min & max accordingly
}
这一切都很好,很花哨,直到我意识到最终用户在完成第一个文件后可以通过方法主体 运行 另一个文件。这意味着成员变量已经从方法的第一个 运行 开始设置。
因此,我没有创建 min 和 max 成员变量,而是将它们设为方法范围内的简单变量。
然而,当运行宁此代码时:
int? max;
int? min;
if (max == null && min == null)
{
...
}
我收到错误 "Use of unassigned local variable 'max' and 'min' "。
谁能告诉我为什么会这样? 我打算取消分配这些变量,但显然我这样做有问题。为什么它作为成员变量而不是局部变量完全正常工作?
试试这个
int? mMax = null;
int? mMin = null;
你可以试试这个:
int? max = null;
int? min = null;
Why are you getting this compilation error.
it attempts to use the variable a before it is assigned a value. The rules governing definite assignment are defined in here.