我有什麼是簡單的開關語句變量的初始化問題
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
在這種情況下,編譯器告訴我,
之前被初始化局部變量myControl可能無法訪問
那麼,避免這種情況的最好方法是什麼?
一個選項是在switch語句之前初始化myControl。但在這種情況下,我再做一次不必要的初始化。
CASE 1:
Control myControl = null;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
下一個選項是改變第二殼體與default
。之後,編譯器將「理解」myControl將被初始化並且不會拋出異常。
案例2:
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
default:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
但這種情況並沒有看起來那麼好,是因爲增加了一些新特性,以我的枚舉後它將爲所有其他類型的默認參數進行(開發者可以很容易忘了改代碼在這裏,或者不需要爲其他枚舉類型初始化myControl)。
在這種情況下最好的方法是什麼?
編譯器給你答案只是將它設置爲null本地你的錯誤「變量myControl可能在訪問前未初始化」 – MethodMan