首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#交换标签系统

C#交换标签系统
EN

Stack Overflow用户
提问于 2018-08-03 08:39:50
回答 1查看 304关注 0票数 0

case标签的正确语法是什么。C#规范中写道:

代码语言:javascript
复制
switch-statement:
switch   (   expression   )   switch-block
switch-block:
{   switch-sectionsopt   }
switch-sections:
switch-section
switch-sections   switch-section
switch-section:
switch-labels   statement-list
switch-labels:
switch-label
switch-labels   switch-label
switch-label:
case   constant-expression   :
default   :

因此,case语句是'case‘后跟一个常量,后跟一个:。然而,在我从微软下载的GitHub上的一些代码中,它有以下内容:

代码语言:javascript
复制
  switch (NavigationRootPage.RootFrame?.Content)
  {
    case ItemPage itemPage:
      itemPage.SetInitialVisuals();
      break;
    case NewControlsPage newControlsPage:
    case AllControlsPage allControlsPage:
      NavigationRootPage.Current.NavigationView.AlwaysShowHeader = false;
      break;
  }

在resharper中,它指出newControlPage是一个从未使用过的变量。

所以c#规范是不正确的吗?

我刚从MS.下载了我认为是最新版本的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 08:44:49

这是C# 7中引入的新模式匹配语法。它主要测试NavigationRootPage.RootFrame?.Content是什么类型。例如,如果它是ItemPage,那么它的值被放入一个名为itemPage的变量中。这很方便,因为您不必使用isas操作符来检查每个类型和类型转换。

你不会在语言规范中找到这一点,因为该规范的最新官方发布是针对C# 5. I know they are drafting a spec for C# 6的,但我还没有听说过任何关于C# 7的规范。如果你只想看看模式匹配语法的规范,这个建议可以在here找到,正如Camilo Terevinto所建议的那样。

要使警告静默,请将newControlsPageallControlsPage替换为_

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51663883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档