开关,外壳,何时

时间:2019-07-11 14:37:05

标签: c#

我看到了有关使用“ switch”和条件“ when”使用整数范围的答案,但是我不明白它的工作原理,因为它在“ case”中声明了一个新变量,我不知道它是如何运行的与传递给switch求值的变量有关。

int i = 63;

switch (i)
{
    case int n when (n >= 100):
        Console.WriteLine($"I am 100 or above: {n}");
        break;

    case int n when (n < 100 && n >= 50 ):
        Console.WriteLine($"I am between 99 and 50: {n}");
        break;

    case int n when (n < 50):
        Console.WriteLine($"I am less than 50: {n}");
        break;
}

1 个答案:

答案 0 :(得分:3)

在这种情况下,n只是另一个保存i值的变量。用一些伪代码换个角度看可能会更有帮助。

public abstract class Animal
{
     public abstract string Talk();
}

public class Dog : Animal
{
     public string Talk(){
         return "Bark";
     }
}


//cat class : Animal
//elephant class : Animal



Animal a = GetSomeRandomAnimal();


switch (a) {
    case Dog d:
        Console.WriteLine($"The dog says {d.Talk()}");
    case Cat c:
        Console.WriteLine($"The cat says {c.Talk()}");
     //etc
}

在这里,案例正在检查aDog还是Cat或指定的任何其他案例。希望可以将其清除一点。