我在网上找到了一段代码:
new Claim(JwtClaimTypes.EmailVerified,
user.EmailConfirmed ? "true" : "false",
ClaimValueTypes.Boolean)
虽然代码有效,但我不确定该特定行是做什么的。我知道“?” symbol用于取消类型,但它是否也可用于转换类型?
答案 0 :(得分:3)
不适合铸造。它只是conditional operator,是执行if-else
代码块的简单语法。因此,如果?
之前的表达式返回true,它将执行第一个表达式(后跟?
的表达式)并返回值,如果?
之前的表达式返回false
,它返回第二个表达式的返回值(后跟:
)
因此,在您的情况下,如果表达式user.EmailConfirmed
的值为true
,则代码将与
new Claim(JwtClaimTypes.EmailVerified, "true" , ClaimValueTypes.Boolean)
else(如果是false
)
new Claim(JwtClaimTypes.EmailVerified, "false" , ClaimValueTypes.Boolean)
您也可以在布尔值上调用ToString()
方法,然后调用ToLower()
方法获取true
或false
。如果您想尝试,请按照以下方式进行操作
new Claim(JwtClaimTypes.EmailVerified, user.EmailConfirmed.ToString().ToLower(),
ClaimValueTypes.Boolean)
我个人更喜欢第一种方法(条件运算符),但可能用一些常量替换魔术字符串