三元运算语法

本文关键字:运算 语法 三元 | 更新日期: 2023-09-27 18:34:32

newViewModel.Notification = "information" ? "information" : "success";

谁能帮我纠正上述问题?

Cannot implicitly convert type 'string' to 'bool'

如果通知不等于"信息",则应等于"成功"。

三元运算语法

正确的用法是:

newViewModel.Notification = newViewModel.Notification == "information" ? "information" : "success";

这遵循此处定义的语法:

condition ? first_expression : second_expression;

其中:"条件必须评估为真或假。(即布尔值(


但是,如果您只想在一个条件下设置三元,则使用三元是没有意义的,请考虑使用单个 if 语句:

if(newViewModel.Notification != "information")
    newViewModel.Notification = "success";

在我看来,这也很容易阅读和理解。

第一个操作数必须是布尔值:

newViewModel.Notification = newViewModel.Notification == "information" ? "information" : "success";

但是(正如Matti Virkkunen所建议的那样(,您可以使用简单的if语句(特别是如果您没有分支else(

if(newViewModel.Notification == "information")
    newViewModel.Notification = "success";

使用 string.Equals 可以是更多的语义/自我记录:

newViewModel.Notification =
    newViewModel.Notification.Equals("information") ? "information" : "success";

你的三元正在取一个字符串,它需要像消息所说的那样取一个布尔值,它需要像这样:

boolean ? object : object

你的意思是做其中之一吗?

newViewModel.Notification = 
    (something == "information" ? "information" : "success");

newViewModel.Notification = 
    (newViewModel.Notification == "information" ? "information" : "success");

请注意,这不是使用三元的特别好的地方,直if可能会更好。

if (newViewModel.Notification != "information")
    newViewModel.Notification = "success"