我得到了一個簡單的問題,但找不到解決方案:檢查變量是否分配
是否可以檢查給定變量是否已分配?
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