C# 在c中进行模式匹配时,为什么要声明一个额外的变量#

C# 在c中进行模式匹配时,为什么要声明一个额外的变量#,c#,switch-statement,pattern-matching,C#,Switch Statement,Pattern Matching,在C#模式匹配中,我们必须这样做: switch(someVar) { case var x when condition: break; default: break; } 如您所见,无论何时使用模式匹配,我们都必须声明一个新变量。为什么呢?为什么我们不能直接使用someVar switch(someVar) { case var _ when someVar > 10: break; default: break; } 不过,您仍然需

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

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

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

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

不过,您仍然需要
var 
,因为这是一种模式,switch语句与模式匹配,而不是与条件匹配。
模式与任何内容都匹配。然后,
当……
部件被检查时。

欢迎来到StackOverflow。我不知道你们为什么这么做,正如你们在这些示例中看到的,我们需要检查
someVar
是否来自特定类型。有时您只想在
部分时使用
,不需要额外的类型验证,但语法需要它。