我有类似以下代码:
if (variable !is AnyType)
{
// TODO
}
但是!is
到底是什么,它是否是负数,并且在最新的C#(不是预览版)中受支持?
答案 0 :(得分:2)
在您的评论中,您说这是骑士没有告诉您它无效。
但是,是无效代码。您将无法使用此构造来编译C#代码。
但是,似乎Rider也没有表明这是无效的代码:
应在代码下方添加“ squigglies”,如本例所示:
因此,这似乎是解析器中处理语法突出显示和验证的错误。
无论如何,代码 无效,并且无法编译:
从lv Misticos的答案(现已删除)来看,这可能是C#8预览中的合法代码,但现在无效。
好,现在变得很清楚了。
在C#8预览中,!不与is
运算符关联,而是与变量关联,因此您所理解的是:
if (variable! is AnyType)
让我用伪代码重新表达一下:
if (variable /* that isn't null, honestly, just trust me*/ is AnyType)
是的,如果所有C#8计划都实现了,这实际上将是合法的C#代码。
我想JetBrains提前添加了对C#8语法高亮显示的支持。我仍然说这是Rider中的某种形式的错误,在实际得到支持之前,他们不应该允许将来的C#语法。例如,我没有安装C#8或任何此类预览,因此我的PC上可以使用的最新C#Rider是7.3(我认为)。