首页 > 解决方案 > 为什么我们在c#中进行模式匹配时要声明一个额外的变量

问题描述

在 C# 模式匹配中,我们必须这样做:

switch(someVar)
{
  case var x when condition:
    break;
  default:
    break;
}

如您所见,每当我们使用模式匹配时,我们都必须声明一个新变量。这是为什么?为什么不能someVar直接使用?

标签: c#switch-statementpattern-matching

解决方案


是的,您可以someVar直接使用,如下所示:

switch(someVar)
{
  case var _ when someVar > 10:
    break;
  default:
    break;
}

不过,您仍然需要var _,因为这是一个模式,并且 switch 语句与模式匹配,而不是条件_模式匹配任何东西。然后when ...检查零件。


推荐阅读