switch case语法指定数据类型

Tho*_*mas 4 c# syntax c#-7.0

今天在工作中,我们现在和我们一起做了一次代码审查,但今天我看到了一种我以前没见过的语法.我在网上搜索它无济于事,更有趣的是,尽管使用相同版本的Visual Studio,即2017 Enterprise,当我尝试重新创建我看到的内容时,我在家里遇到语法错误今天上班.它看起来像这样:

switch (someObject) {
    case TypeOne valueOne: action1(); break;
    case TypeTwo valueTwo: action2(); break;
    // ... and so on
}
Run Code Online (Sandbox Code Playgroud)

换句话说,看起来他们一次性检查了类型和价值.但就像我说的,我在互联网上找不到它,我在家里得到语法错误.我知道C#7中有很多新东西,特别是在语法糖方面.你能解释一下吗?

Pat*_*man 13

这是一个新的C#7功能:模式匹配switch语句,它匹配类型.

这个代码做了什么,给出了第一个分支:

  • 它检查someObject是,是派生还是实现类型TypeOne.
  • 如果是,则转换为分配给的someObject类型.TypeOnevalueOne
  • 然后它进入可以直接使用的case块valueOne.