Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“你能告诉我吗?”&引用;符号是否用于在C#中强制转换类型?_C#_.net - Fatal编程技术网

“你能告诉我吗?”&引用;符号是否用于在C#中强制转换类型?

“你能告诉我吗?”&引用;符号是否用于在C#中强制转换类型?,c#,.net,C#,.net,我在网上找到一段代码,其中有一行: new Claim(JwtClaimTypes.EmailVerified, user.EmailConfirmed ? "true" : "false", ClaimValueTypes.Boolean) 当代码运行时,我不确定那一行是做什么的。我知道“?”符号用于使类型无效,但它也可以用于强制类型转换吗?它不用于强制类型转换。这只是一个简单的语法,可以执行if-else代码块。因此,如果?之前的表达式返回true,它将执行第一个表达

我在网上找到一段代码,其中有一行:

new Claim(JwtClaimTypes.EmailVerified, 
     user.EmailConfirmed ? "true" : "false",
     ClaimValueTypes.Boolean)

当代码运行时,我不确定那一行是做什么的。我知道“?”符号用于使类型无效,但它也可以用于强制类型转换吗?

它不用于强制类型转换。这只是一个简单的语法,可以执行
if-else
代码块。因此,如果
之前的表达式返回true,它将执行第一个表达式(后面跟着
)并返回值,如果
之前的表达式返回
false
,它将返回第二个表达式的返回值(后面跟着

因此,在您的情况下,如果表达式
user.emailconfirm
的值为
true
则代码与

new Claim(JwtClaimTypes.EmailVerified,  "true" , ClaimValueTypes.Boolean)
else(如果为
false

您还可以对布尔值调用
ToString()
方法,然后调用
ToLower()
方法以获得
true
false
。如果你想尝试一下,下面是你的方法

new Claim(JwtClaimTypes.EmailVerified, user.EmailConfirmed.ToString().ToLower(),
                                                                ClaimValueTypes.Boolean)

我个人更喜欢第一种方法(条件运算符),但可能会用一些常量替换魔术字符串,这是一个三元运算符,与
完全不同,它表示一个可为空的值。此运算符仅适用于布尔值,
表示如果布尔值为真,应执行的操作<代码>:表示其他情况。参考:
new Claim(JwtClaimTypes.EmailVerified, user.EmailConfirmed.ToString().ToLower(),
                                                                ClaimValueTypes.Boolean)