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)...
}