C# C中的花括号#

C# C中的花括号#,c#,syntax,C#,Syntax,我在玩一些代码,我想知道是否有人能告诉我这段代码中的花括号代表什么。我以为它会是一个空的物体,但事实似乎并非如此 Person person = new Person{}; if (person is {}){ Console.WriteLine("Person is empty."); } else { Console.WriteLine("Person is not empty

我在玩一些代码,我想知道是否有人能告诉我这段代码中的花括号代表什么。我以为它会是一个空的物体,但事实似乎并非如此

 Person person = new Person{};

            if (person is {}){
                Console.WriteLine("Person is empty.");
            } else {
                Console.WriteLine("Person is not empty.");
            }

它编译得很好;但是,如果我填充person类的属性,它仍然属于if语句的person is empty部分。

{}在本上下文中,表示任何类型的模式匹配,以检查实例是否为空:

if(person != null){     //the same as: if(person is {})...

}
它类似于模式匹配的var关键字,因此不需要显式指定/重复类型(尽管您知道它)


更多信息(请参阅“特殊匹配表达式”一节):

这里有花括号的三种不同用法(块、对象初始值设定项、模式匹配),以及其中两种用法的解释链接。为了得到一个有用的答案,请指出你问的是哪一个。我想你回答了我的问题。我指的是if语句,其中person是{};所以我假设这个if用于模式匹配。@Crow:error curlies:-)-它()的意思是“notnull”,谢谢。仍然认为
GetPersonFromDb()是var person
对大多数C#dev来说会更清楚,我们也不会搜索“它意味着什么”。)我想念旧的C#团队,他们很难推销这种“新”东西。
if(GetPersonFromDb() is {} person){     //the same as: var person = GetPersonFromDb(); if(person != null)...

}