switch case语法指定数据类型

时间:2017-04-28 14:16:05

标签: c# syntax c#-7.0

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

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

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

1 个答案:

答案 0 :(得分:13)

这是一个new C# 7 feature:模式匹配switch语句,它匹配类型。

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

  • 它检查someObject是,是源自还是实现类型TypeOne
  • 如果是,则会将someObject转换为TypeOne类型valueOne
  • 然后它进入案例块,您可以直接使用valueOne