在C#7.0之前,以下代码有效:
if(x is X)
{
//...
}
现在,以下内容也有效:
if(x is X _)
{
//...
}
对TryRoslyn进行编码,这些代码部分生成相同的IL。我的问题是:如果没有必要,丢弃运算符在模式匹配中的目的是什么?我在这里错过了什么吗?
这个问题与that一个问题不同,因为我专门针对模式匹配(is
运算符)询问了丢弃运算符(通配符)的用途。
答案 0 :(得分:2)
根据Neal Gafter,丢弃运算符在这种情况下它几乎没用,至少目前如此。
答案 1 :(得分:1)
这还没用。但是当引入递归模式匹配时(希望在C#8.0中),在模式的一部分中使用丢弃将是有用的。
详细信息尚未最终确定,但请设想is (1, (_, 3))
或is X (1, Y (_, 3))
之类的内容。