相关疑难解决方法(0)

落在模式匹配中

目前在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)

有更好的方法吗?

c# pattern-matching switch-statement fall-through c#-7.0

5
推荐指数
1
解决办法
548
查看次数