用int?作为成员变量与局部变量

时间:2015-03-11 05:10:38

标签: c# null int nullable

可能是一个非常快速的解决方案,但我正在使用Visual Studio中的项目,其中程序读取数字的文本文件,然后为它们计算某些统计信息。

我最初启动了两个成员变量来表示最小值和最大值。

  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
}

这很好,很花哨,直到我意识到最终用户能够在完成第一个文件后通过方法体运行另一个文件。这意味着成员变量已经从方法的第一次运行中设置。

因此,我没有制作最小和最大成员变量,而是将它们变成了方法范围内的变量。

但是,运行此代码时:

int? max;
int? min;
if (max == null && min == null)
{
    ...
}

我收到错误"使用未分配的本地变量' max'和' min' "

有人能告诉我为什么会这样吗? 我打算让这些变量取消分配,但显然我这样做有问题。为什么它作为成员变量而不是局部变量完全正常?

2 个答案:

答案 0 :(得分:4)

试试这个

int? mMax = null;
int? mMin = null;

答案 1 :(得分:0)

你可以试试这个:

int? max = null;
int? min = null;
  

为什么会出现此编译错误。

     

它尝试在赋值之前使用变量a。管理明确赋值的规则在here中定义。