使用整数?作为成员变量与局部变量

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.