is X 和 is X _ 之间的区别

Difference between is X and is X _

在 C# 7.0 之前,以下代码有效:

if(x is X)
{
    //...
}

现在,以下内容也有效:

if(x is X _)
{
    //...
}

根据 TryRoslyn,这些代码段生成相同的 IL。我的问题是:丢弃运算符在模式匹配中的目的是什么,如果没有必要也没有用?我在这里遗漏了什么吗?

这个问题与一个不同,因为我问的是专门针对模式匹配(is运算符)的丢弃运算符(通配符)的用途。

根据 Neal Gafter,丢弃运算符 在这种情况下 它几乎没有用,至少现在是这样。

这还没有用。但是当引入递归模式匹配时(希望在 C# 8.0 中),在部分模式中丢弃会很有用。

细节尚未最终确定,但想象一下 is (1, (_, 3)) 或可能 is X (1, Y (_, 3))