我需要一种方法来了解case语句中使用的常量的值。这可能吗? 例如
private void myswitchfunc(string myvar) {
switch(myvar) {
case "hello":
mycallback(); //no variable passing!
break;
case "hi":
mycallback(); //no variable passing!
break;
}
}
private void mycallback() {
//print the name of the constant in the calling case
}
我得到的最远的是这个 http://www.csharp-examples.net/reflection-calling-method-name/
答案 0 :(得分:3)
不,您需要传递该值。或者在共享外部范围中使用变量(来自Cameron)
答案 1 :(得分:3)
private static void myswitchfunc(string myvar)
{
Action mycallback = () => Console.WriteLine(myvar);
switch (myvar)
{
case "hello":
mycallback(); //no variable passing!
break;
case "hi":
mycallback(); //no variable passing!
break;
}
}
答案 2 :(得分:1)
您是否需要像使用Reflection一样复杂?你可以只将常量的值存储在某个成员变量中,以便在mycallback()方法中访问吗?例如:
class MyClass
{
private string _MySwitchString;
private void myswitchfunc(string myvar) {
_MySwitchString = myvar;
switch(myvar) {
case "hello":
mycallback(); //no variable passing!
break;
case "hi":
mycallback(); //no variable passing!
break;
}
}
private void mycallback() {
//print the name of the constant in the calling case
Console.Writeline(_MySwitchString);
}
}
请注意,这是未经测试的。
答案 3 :(得分:0)
在这种情况下,您必须使用“if”,“else if”语句。使用switch-case语句无法做到这一点。