目前在c#7(版本15.3.4)中,以下代码对编译有效,但两个变量都是合法不可用的.
switch(fruit)
{
case Apple apple:
case Orange orange:
// impossible to use apple or orange
break;
case Banana banana:
break;
}
Run Code Online (Sandbox Code Playgroud)
如果您尝试使用它们,则会得到熟悉的错误,在访问之前可能无法初始化变量.
有时在模式匹配中,您不关心确切的类型,只要该类型属于您想要的类别.这里只以苹果和橘子为例.
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;
}
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?