【发布时间】:2015-03-11 05:10:38
【问题描述】:
可能是一个非常快速的解决方案,但我正在 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
}
这一切都很好,花花公子,直到我意识到最终用户在完成第一个文件后可以通过方法体运行另一个文件。这意味着成员变量在方法的第一次运行时就已经设置好了。
因此,我没有制作 min 和 max 成员变量,而是将它们制作为方法范围内的简单变量。
但是,当运行此代码时:
int? max;
int? min;
if (max == null && min == null)
{
...
}
我收到错误“使用未分配的局部变量 'max' 和 'min'”。
谁能告诉我为什么会这样? 我打算取消分配这些变量,但显然我这样做有问题。为什么它作为成员变量可以完全正常工作而不是局部变量?
【问题讨论】:
-
您可以将 null 分配给您的变量,但您必须将您的变量更改为可以为 null。 msdn.microsoft.com/en-us/library/1t3y8s4s.aspx