3

所以,我有一种解析表达式的算法。此外,无论是否有括号,都有条件方法。我正在制作表达式并将其放入字符串变量中,例如:

string expression = "6*(3+2)";

然后我让它通过解析功能。在它给了我奇怪的结果之后,我去调试解析函数并注意到奇怪的事情发生了:当我从右到左迭代字符串的字符时

for (int i = (expression.Length -1); i>=0; i--) ...

它没有通过条件

if (expression[i].Equals(")")) ...

当表达式 [i] 显示在 ")" 上时,因为我在 Visual Studio 的 "Locals" 部分看到了它。这是为什么?我需要做的是:

if (expression[i].ToString() == ")") ...

然后我会得到正确的结果。它没有让我做 expression[i] == ")" 因为它说我不能在 char 和 string 上应用 "==" 运算符。

那么,为什么.Equals 在它是“)”时没有通过?

4

1 回答 1

16

这是为什么?

字符与字符串不同。字符串是一个字符序列expression[i]is的类型char,不是string- 所以你想将它与char文字进行比较:

if (expression[i] == ')')

请注意单引号 ( ')') 而不是您使用的双引号 ( ")")。单引号用于字符文字;双引号用于字符串文字。

于 2013-06-02T15:08:54.520 回答