字符串“a”不等于C#中的Char“a”?

时间:2013-06-02 15:07:32

标签: c# string char

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

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在“)”时没有通过?

1 个答案:

答案 0 :(得分:17)

  

为什么?

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

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

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