是否有可能确定当前正在评估哪个案例?就像这个示例代码:
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的答案以获取可能的替代方案。
case
表达式只能是常量。我认为你试图做一些真正不存在的事情... - Jon SkeetWriteLine(current_num)
呢?目前还不清楚OP想要实现什么-我已经发布了一个可能有帮助的答案,但我们确实需要更多的明确性。 - Jon SkeetTrace.WriteLine("saving at current checkpoint")
,作为某种检查点来保存对数据库的更改。所以one
实际上是25049
,而two
是55023
。我想原问题的答案是“不可能”,谢谢。 - TankorSmashDictionary<int, string>
或者使用我在答案中建议的枚举方法。 - Jon SkeetSystem.Reflection
的GetField
,可以使用GetCase
来实现。但如果不可能的话,你提供的答案也非常有帮助。 - TankorSmash