目前在 c#7(版本 15.3.4)中,以下代码可有效编译,但两个变量都无法正常使用。
switch(fruit)
{
case Apple apple:
case Orange orange:
// impossible to use apple or orange
break;
case Banana banana:
break;
}
如果你尝试使用它们,你会得到熟悉的错误,变量可能在访问之前没有被初始化。
有时在模式匹配中您并不关心确切的类型,只要该类型在您想要的类别中。这里仅以苹果和橙子为例。
List<Fruit> applesAndOranges = new List<Fruit>();
switch(fruit)
{
case Fruit X when X is Apple || X is Orange:
applesAndOranges.Add(X);
break;
case Banana banana:
break;
}
有更好的方法吗?