什么是';是{}';c#中的语法含义?

什么是';是{}';c#中的语法含义?,c#,C#,在过去的几周里,我开始在C#中遇到这种新语法: 所以它返回布尔。看起来有点像JavaScript。但是这张支票到底有什么作用呢?和这个一样吗 if (someObj == null) { do some stuff } 我知道C#的新版本包含了大量的语法糖分。这是其中的一部分吗?它有名字吗?例如,我知道?:被称为三元运算符,?。被称为Elvis运算符。但是什么是是{}?甚至是接线员 是的,我在这里询问之前尝试过在线搜索,但谷歌似乎拒绝找到任何关于is{}语法的有用信息,因为请求中有大括

在过去的几周里,我开始在C#中遇到这种新语法:

所以它返回布尔。看起来有点像JavaScript。但是这张支票到底有什么作用呢?和这个一样吗

if (someObj == null)
{
    do some stuff
}
我知道C#的新版本包含了大量的语法糖分。这是其中的一部分吗?它有名字吗?例如,我知道
?:
被称为三元运算符,
?。
被称为Elvis运算符。但是什么是
是{}
?甚至是接线员


是的,我在这里询问之前尝试过在线搜索,但谷歌似乎拒绝找到任何关于
is{}
语法的有用信息,因为请求中有大括号。

从更一般的意义上说,这是基于成员的模式匹配-例如:

if(foo是{Id:42,名称:“abc”})
{
}
测试
foo
是否具有
Id
42和
Name
“abc”。在这种情况下,您正在测试零属性,因此它实际上与
is object
相同(即,对于不可为null的值类型,为not
null
测试,或为no op
true


要与问题中的内容进行比较(
if(someObj==null)
)-它与此相反,注意它也不会对
null
测试使用重载的
=
运算符(哪个
==null
会)。

这是否回答了您的问题?这是一个好主意,它真的很有帮助。现在,我知道它被称为属性模式,所以我可以用谷歌进一步搜索它,谢谢。你能为此分享到文档的链接吗?@EhsanSajjad“递归模式匹配”:
if (someObj == null)
{
    do some stuff
}