为什么在将case语句更改为时,以下代码无法编译
case ENUM1: doSomeStuff();
Run Code Online (Sandbox Code Playgroud)
作品?
public enum EnumType
{
ENUM1, ENUM2, ENUM3;
void doSomeStuff()
{
switch(this)
{
case EnumType.ENUM1: doSomeStuff();
}
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么我不能在案例标签中获得枚举常量引用?
嗨,有人知道为什么当我切换Enum时,案例应该是不合格的Enum值吗?
例:
switch(var) {
case Enum.FIRST:
break;
}
Run Code Online (Sandbox Code Playgroud)
是非法的
但:
switch(var) {
case FIRST:
break;
}
Run Code Online (Sandbox Code Playgroud)
是合法的.
我知道var是特定类型(Enum),但是如果我使用Enum值的完全限定名称,编译器会关心它?
我正在尝试制作一个游戏,并且我有一个 Selection 类,其中包含一个名为 str 的字符串。我每 17 毫秒将以下代码应用于我的选择对象。
if(s.Str == "Upgrade") {
}else if(s.Str == "Siege") {
}else if(s.Str == "Recruit") {
}
Run Code Online (Sandbox Code Playgroud)
换句话说,这些选择对象会根据它们的类型(升级、攻城等...)做不同的工作。我在别处使用 str 变量。我的问题是:
如果我在第一次创建对象时将类型分配给一个整数,它会更优化吗?
if(s.type == 1) {
}else if(s.type == 2) {
}else if(s.type == 3) {
}
Run Code Online (Sandbox Code Playgroud)
这会让我编写额外的代码行(因为我第一次创建时必须按类型分隔对象)并使代码更难理解,但是比较整数而不是比较字符串会有区别吗?