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

Tom*_*mmz 3 c# string char

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

string expression = "6*(3+2)";
Run Code Online (Sandbox Code Playgroud)

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

for (int i = (expression.Length -1); i>=0; i--) ...
Run Code Online (Sandbox Code Playgroud)

它没有通过条件

if (expression[i].Equals(")")) ...
Run Code Online (Sandbox Code Playgroud)

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

if (expression[i].ToString() == ")") ...
Run Code Online (Sandbox Code Playgroud)

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

那么,为什么.Equals在")"时没有通过?

Jon*_*eet 17

这是为什么?

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

if (expression[i] == ')')
Run Code Online (Sandbox Code Playgroud)

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