0

为什么它说它不能与 bool 和 int 一起使用

int sign = (op == "+" ?? 1 : -1);

我需要使用 if ... then 来代替吗?

4

6 回答 6

8

您需要使用条件运算符 ?:

int sign = (op == "+" ? 1 : -1);

双问号是null 合并运算符,它做了完全不同的事情。

于 2013-06-09T20:57:12.210 回答
3

那是无效的语法。

条件运算符使用单个 ?.

于 2013-06-09T20:56:58.570 回答
3

因为正确的语法是

int sign = (op == "+" ? 1 : -1);

只有一个问号。

带有两个问号的语法用于空合并运算符,而您的表达式需要条件运算符

于 2013-06-09T20:57:18.757 回答
2

??空合并运算符op == "?"是一个返回布尔值的表达式。

您正在寻找int sign = (op == "+" ? 1 : -1);,它使用条件运算符

于 2013-06-09T20:57:15.447 回答
2

条件运算符(也称为三元运算符)只需要一个问号。

int sign = (op == "+" ? 1 : -1);
于 2013-06-09T20:57:29.023 回答
-1

您还应该检查(取决于字符串来自何处)检查 op 是否确实分配了某个字符串

 string op = "+";
    int sign = ((op == "+") ? 1 : op.Length == 0? 0:-1);

编辑:检查空选项

int sign = (String.IsNullOrEmpty(op) ? 0 : (op == "+") ? 0 : -1);
于 2013-06-09T21:28:20.177 回答