2
目前在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;
}
有没有更好的方法?