switch case 语法指定数据类型
switch case syntax specifies a data type
今天在工作中,我们不时地进行了代码审查,但今天我看到了一种我以前从未见过的语法。我在网上搜索了没用,更有趣的是,尽管使用相同版本的 Visual Studio,即 2017 Enterprise,但当我尝试重新创建时,我在家出现语法错误我今天在工作中看到的。它看起来像这样:
switch (someObject) {
case TypeOne valueOne: action1(); break;
case TypeTwo valueTwo: action2(); break;
// ... and so on
}
换句话说,看起来他们同时检查了类型和值。但正如我所说,我无法在互联网上找到它,而且我在家里遇到语法错误。我知道 C# 7 中有很多新东西,尤其是在语法糖方面。你能解释一下吗?
这是一个 new C# 7 feature: 匹配类型的模式匹配 switch 语句。
此代码的作用,给出第一个分支:
- 它检查
someObject
是否是、派生自或实现类型 TypeOne
。
- 如果是这样,它会将
someObject
转换为类型 TypeOne
,并分配给 valueOne
。
- 然后进入case块,直接用
valueOne
.
今天在工作中,我们不时地进行了代码审查,但今天我看到了一种我以前从未见过的语法。我在网上搜索了没用,更有趣的是,尽管使用相同版本的 Visual Studio,即 2017 Enterprise,但当我尝试重新创建时,我在家出现语法错误我今天在工作中看到的。它看起来像这样:
switch (someObject) {
case TypeOne valueOne: action1(); break;
case TypeTwo valueTwo: action2(); break;
// ... and so on
}
换句话说,看起来他们同时检查了类型和值。但正如我所说,我无法在互联网上找到它,而且我在家里遇到语法错误。我知道 C# 7 中有很多新东西,尤其是在语法糖方面。你能解释一下吗?
这是一个 new C# 7 feature: 匹配类型的模式匹配 switch 语句。
此代码的作用,给出第一个分支:
- 它检查
someObject
是否是、派生自或实现类型TypeOne
。 - 如果是这样,它会将
someObject
转换为类型TypeOne
,并分配给valueOne
。 - 然后进入case块,直接用
valueOne
.