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

有人可以帮我纠正上述问题吗?

Cannot implicitly convert type 'string' to 'bool'

如果 Notification 不等于“信息”,它应该等于“成功”。

4

4 回答 4

7

正确的用法是:

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

这遵循此处定义的语法:

condition ? first_expression : second_expression;

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


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

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

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

于 2013-10-09T16:12:05.950 回答
4

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

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

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

if(newViewModel.Notification == "information")
    newViewModel.Notification = "success";
于 2013-10-09T16:10:21.197 回答
2

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

boolean ? object : object

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

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

或者

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

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

if (newViewModel.Notification != "information")
    newViewModel.Notification = "success"
于 2013-10-09T16:11:39.560 回答
2

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

newViewModel.Notification =
    newViewModel.Notification.Equals("information") ? "information" : "success";
于 2013-10-09T16:13:24.707 回答