在过去的几周中,我开始在C#中遇到以下新语法:
if (someObj is { })
{
do some stuff
}
因此它返回布尔值。似乎有点像JavaScript。但是,此检查的确切作用是什么?与此相同吗?
if (someObj == null)
{
do some stuff
}
我知道新版本的C#包含很多语法糖。这部分吗?它有名字吗?例如,我知道这?:
称为三元运算符,?.
也称为猫王运算符。但是什么is { }
呢?甚至是运营商吗?
是的,在尝试在此处询问之前,我尝试过在线搜索,但是is { }
由于请求中的括号,Google似乎拒绝找到任何有关语法的有用信息。
从更一般的意义上讲,这是基于成员的模式匹配-例如:
if (foo is { Id: 42, Name: "abc"})
{
}
测试是否foo
具有Id
42和Name
“ abc”。在这种情况下,您正在测试零属性,因此它实际上与零属性相同is object
(即null
,true
对于不可为空的值类型,则为非测试或无操作)。
为了与问题(if (someObj == null)
)中的内容进行比较-与此相反,请注意,它也不会==
在null
测试中使用重载运算符(== null
它将)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句