switch case with integer expression
我试图用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | switch (mystring.length) { case <=25: { //do this break; } case <50: { //do this break; } default: break; } |
这是我想做的一些事情,但我无法知道如何把
对于特定的情况,最好使用if/else,对于switch语句,不能在该情况中放置条件。看起来您正在检查范围,如果范围是常量,则可以尝试以下操作(如果要使用switch语句)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | int Length = mystring.Length; int range = (Length - 1) / 25; switch (range) { case 0: Console.WriteLine("Range between 0 to 25"); break; case 1: Console.WriteLine("Range between 26 to 50"); break; case 2: Console.WriteLine("Range between 51 to 75"); break; } |
号
这确实对手术没有太大帮助,但希望它能帮助将来找这个的人。
如果您使用的是C 7(在Visual Studio 2017中提供),则可以在一个范围内使用
例子:
1 2 3 4 5 6 7 8 9 10 | switch (mystring.length) { case int n when (n >= 0 && n <= 25): //do this break; case int n when (n >= 26 && n <= 50 ): //do this break; } |
。
试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int range = (int) Math.Floor(mystring.Length / 25); switch (range) { case 0: //do this <= 25 break; case 1: //do this < 50 & > 25 break; default: break; }? |
你不能用
1 2 3 4 5 6 7 8 9 | Dictionary<int, Action> actions = new Dictionary<int, Action>() { {25,()=>Console.WriteLine("<25")}, {49,()=>Console.WriteLine("<50")}, {int.MaxValue,()=>Console.WriteLine("Default")}, }; actions.First(kv => mystring.length < kv.Key).Value(); |