我得到了一个简单的问题,但找不到解决方案:检查变量是否分配
是否可以检查给定变量是否已分配?
int i;
// stuff happens
if (someTest(i));
i = 0;
Console.Write("now i is assigned for sure")
我得到了一个简单的问题,但找不到解决方案:检查变量是否分配
是否可以检查给定变量是否已分配?
int i;
// stuff happens
if (someTest(i));
i = 0;
Console.Write("now i is assigned for sure")
对于值类型,变量是总是分配。有是有某种价值。即便如此,如果你试图读取该变量被分配之前,编译器会告诉你并显示一个错误:你的代码将无法编译。
“抛出一个错误”是一种误导。编译器会报告一个错误 – pm100
@ pm100我的意思是“扔”在更一般的英语意义上,但你说得对,它具有特定的C#含义。这是否更好? –
在你的情况下,需要知道给定的字段设置与否,你可以有属性来控制现场。在setter中你可以控制它,例如在下面的例子中isSet布尔标志在值设置的时候更新。如果您需要根据另一个值重置标志,则可以在setter中添加另一个条件。
private int i;
private bool isSet;
public int IProp
{
get { return i;}
set { isSet =true; i=value; }
}
// test
Console.WriteLine("Is Set:" + isSet);
IProp = 0;
Console.WriteLine("Is Set:" + isSet);
//results
//Is Set:False
//Is Set:True
没了遗憾 - 你可以使用一个可以为空,但你不知道它是否被分配无效。 –
你也可以将它封装在一个属性中。 –
使用属性并且很容易 – Paparazzi