2016-11-19 89 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