所以,我有一个解析表达式的算法。此外,还有条件方式,是否有括号。我正在制作表达式并将其放在字符串变量中,例如:
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() == ")") ...
然后我会得到正确的结果。它没有让我做表达式[i] ==“)”因为它说我不能在char和string上应用“==”运算符。
那么,为什么.Equals在“)”时没有通过?
答案 0 :(得分:17)
为什么?
字符与字符串不同。字符串是字符的序列。 expression[i]
的类型为char
,而非string
- 因此您希望将其与char
字面值进行比较:
if (expression[i] == ')')
请注意单引号(')'
),而不是您使用的双引号(")"
)。单引号用于字符文字;双引号用于字符串文字。