相关疑难解决方法(0)

C# - “is”运算符后面的大括号的含义

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

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

这是另一个:

if(!(diagnostic.Location.SourceTree is { } tree))

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

c# curly-braces operator-keyword

7
推荐指数
1
解决办法
434
查看次数

C# 中“is { }”语法是什么意思?

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

if (someObj is { })  
{    
    do some stuff 
}
Run Code Online (Sandbox Code Playgroud)

所以它返回布尔值。看起来有点像 JavaScript。但这项检查到底有什么作用呢?和这个一样吗?

if (someObj == null)
{
    do some stuff
}
Run Code Online (Sandbox Code Playgroud)

我知道新版本的 C# 包含很多语法糖。这是其中的一部分吗?它有名字或什么吗?例如,我知道这?:被称为三元运算符,并且?.被称为 Elvis 运算符。但什么是is { }?甚至是运营商吗?

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

c#

5
推荐指数
1
解决办法
356
查看次数

这个模式匹配表达式是否等价于not null

我在 github 上偶然发现了这段代码

if (requestHeaders is {})
Run Code Online (Sandbox Code Playgroud)

我不明白它到底做了什么。

经过试验,它似乎只有在 requestHeaders 为空时才为假。

这只是写的另一种方式if (requestHeaders != null)if (!(requestHeaders is null))

c# syntax

3
推荐指数
1
解决办法
946
查看次数

标签 统计

c# ×3

curly-braces ×1

operator-keyword ×1

syntax ×1