三元运算语法
本文关键字:运算 语法 三元 | 更新日期: 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"