三元运算符语法

时间:2013-10-09 16:09:29

标签: c#

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

有人可以帮我纠正上述情况吗?

Cannot implicitly convert type 'string' to 'bool'

如果通知不等于“信息”,则应该等于“成功”。

4 个答案:

答案 0 :(得分:7)

正确的用法是:

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

这遵循语法为defined here

condition ? first_expression : second_expression;

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


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

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

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

答案 1 :(得分:4)

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

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

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

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

答案 2 :(得分:2)

你的三元组正在接受一个字符串,它需要采取一个bool,因为消息说,它需要像这样:

boolean ? object : object

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

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

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

请注意,使用三元组并不是一个特别好的地方,直线if可能会更好。

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

答案 3 :(得分:2)

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

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