我所拥有的是简单的 switch 语句
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
在这种情况下,编译器告诉我
局部变量 myControl 在访问之前可能未初始化
那么,避免这种情况的最佳方法是什么?
一种选择是在 switch 语句之前初始化 myControl。但在这种情况下,我又做了一次不必要的初始化。
情况1:
Control myControl = null;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
case TabType.View:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
下一个选项是用 更改第二种情况default
。之后编译器将“理解” myControl 无论如何都会被初始化并且不会抛出异常。
案例二:
Control myControl;
switch(x)
{
case TabType.Edit:
{
myControl= ...;
}
default:
{
myControl= ...;
}
}
myPageView.Controls.Add(myControl);
但是这种情况看起来不太好,因为在我的枚举中添加了一些新属性后,它将默认为所有其他类型(开发人员很容易忘记在这里更改代码,或者不需要为其他枚举类型初始化 myControl) .
在这种情况下最好的方法是什么?