相关疑难解决方法(0)

为什么switch for enum接受隐式转换为0但没有任何其他整数?

有一个:

enum SomeEnum
{
    A = 0,
    B = 1,
    C = 2
}
Run Code Online (Sandbox Code Playgroud)

现在编译器允许我写:

SomeEnum x = SomeEnum.A;
switch(x)
{
    case 0: // <--- Considered SomeEnum.A
        break;
    case SomeEnum.B:
        break;
    case SomeEnum.C:
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

0被认为SomeItems.A.但我写不出来:

SomeEnum x = SomeEnum.A;
switch(x)
{
    case 0:
        break;
    case 1: // <--- Here is a compilation error.
        break;
    case SomeEnum.C:
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)

为什么只存在隐式转换0

.net c# enums switch-statement

23
推荐指数
1
解决办法
1276
查看次数

标签 统计

.net ×1

c# ×1

enums ×1

switch-statement ×1