2016-11-19 90 views
0

我得到了一个简单的问题,但找不到解决方案:检查变量是否分配

是否可以检查给定变量是否已分配?

int i; 
// stuff happens 
if (someTest(i)); 
    i = 0; 
Console.Write("now i is assigned for sure") 
+2

没了遗憾 - 你可以使用一个可以为空,但你不知道它是否被分配无效。 –

+0

你也可以将它封装在一个属性中。 –

+0

使用属性并且很容易 – Paparazzi

回答

4

对于值类型,变量是总是分配。有有某种价值。即便如此,如果你试图读取该变量被分配之前,编译器会告诉你并显示一个错误:你的代码将无法编译。

+0

“抛出一个错误”是一种误导。编译器会报告一个错误 – pm100

+0

@ pm100我的意思是“扔”在更一般的英语意义上,但你说得对,它具有特定的C#含义。这是否更好? –

0

在你的情况下,需要知道给定的字段设置与否,你可以有属性来控制现场。在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