ReSharper 建议将模式匹配代码更改为对象模式

Jog*_*gge 8 c# resharper

ReSharper 建议更改以下代码:

if (MyString is string myString)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

对象模式:

if (MyString is { } myString)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

它说:

源表达式始终是模式类型,匹配所有非空值。

我以前从未见过这种语法,也找不到任何有关它的文档。它是什么,它有什么作用?

p__*_*__d 9

{}代表not null,但不调用!=运算符,所以它就像is null不调用==运算符的运算符一样安全。

缺乏有关它的信息。我在github上找到了关于它的线程。我认为这是目前的预览功能。