“你能告诉我吗?”&引用;符号是否用于在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)