我有什么是简单的开关语句变量的初始化问题
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