&is"运算符后的花括号的含义括号、的花、运算符、含义

2023-09-03 12:16:33 作者:干掉李秀满坐拥EXO

我在一些C#源代码中发现以下行:

if(!(context.Compilation.GetTypeByMetadataName("Xunit.FactAttribute")
         is { } factAttribute))

这里是另一个:

if(!(diagnostic.Location.SourceTree is { } tree))
c语言运算符号的介绍

is运算符后面的花括号({ })是什么意思?

推荐答案

这是C#8.0中引入的一个新的模式匹配特性,称为property pattern。在此特定情况下,它用于检查对象是否不为空,例如链接文章:

static string Display(object o) => o switch
{
    Point { X: 0, Y: 0 }         p => "origin",
    Point { X: var x, Y: var y } p => $"({x}, {y})",
    {}                           => o.ToString(),
    null                         => "null"
};