3

是否可以确定当前正在评估哪个案例?像这样的示例代码:

const int one = 1;
const int two = 2;

int current_num = 1;

switch (current_num){
       case one:
       case two:
           WriteLine(current_case) //outputs 'one'
           break;
}

我相信我可能会变得棘手并使用字典或其他东西来查找current_num一旦我开始WriteLine,但可能有一种内置方法来获取当前正在评估的当前案例的名称。

编辑:简短的回答,这是不可能的。查看 JonSkeet 的答案,寻找一个合理的替代方案。

4

1 回答 1

6

目前还不清楚您要做什么,但我怀疑您最好使用枚举:

enum Foo {
    One = 1,
    Two = 2,
    Three = 3
}

...

int someValue = 2;
Foo foo = (Foo) someValue;
Console.WriteLine(foo); // Two

您仍然可以在 case 语句中使用它:

switch (foo) {
    case Foo.One:
    case Foo.Two:
        Console.WriteLine(foo); // One or Two, depending on foo
        break;
    default:
        Console.WriteLine("Not One or Two");
}
于 2013-03-02T17:35:16.643 回答