字符串“a"不等于Char "a"在c#

本文关键字:quot Char 不等于 字符串 | 更新日期: 2023-09-27 18:16:41

所以,我有一个算法解析表达式。还有,不管有没有括号,都有条件的方法。我把表达式放到字符串变量中,比如:

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没有通过呢?

字符串“a"不等于Char "a"在c#

为什么?

字符与字符串不同。字符串是一个字符序列expression[i]的类型是char,而不是string—因此您希望将其与char字面值进行比较:

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

注意单引号(')')而不是你使用的双引号(")")。单引号用于字符字面量;双引号用于字符串字面值