Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“字符串”;a「;不等于Char";a「;在C#中?_C#_String_Char - Fatal编程技术网

“字符串”;a「;不等于Char";a「;在C#中?

“字符串”;a「;不等于Char";a「;在C#中?,c#,string,char,C#,String,Char,所以,我有一个解析表达式的算法。此外,还有一些有条件的方法,不管是否有括号。我制作表达式并将其放入字符串变量中,如: string expression = "6*(3+2)"; 然后我让它通过解析函数。在它给了我奇怪的结果之后,我去调试解析函数,注意到奇怪的事情发生了: 当我从右到左用 for (int i = (expression.Length -1); i>=0; i--) ... 它没有通过条件 if (expression[i].Equals(")")) ... 在exp

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

string expression = "6*(3+2)";
然后我让它通过解析函数。在它给了我奇怪的结果之后,我去调试解析函数,注意到奇怪的事情发生了: 当我从右到左用

for (int i = (expression.Length -1); i>=0; i--) ...
它没有通过条件

if (expression[i].Equals(")")) ...
在expression[i]中显示“)”时,因为我在VisualStudio的“本地人”部分看到了它。 为什么呢? 我需要做的是:

if (expression[i].ToString() == ")") ...
然后我会得到正确的结果。它不允许我做表达式[i]==”,因为它说我不能对字符和字符串应用“==”运算符

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

为什么呢

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

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

请注意单引号(
)”
)而不是双引号(
)。单引号用于字符文字;双引号用于字符串文本。

两个不同数据类型的对象不能被视为同一对象,即使它们看起来相同。那么为什么OP在这里没有得到类型错误呢?哇,乔恩先生,很高兴得到你的回答,看到你的书和你的评论,真的很高兴你加入这个社区:)。换句话说,表达式[i].Equals(“)”)也是正确的。谢谢:)@Tommz:你可以使用
等于
,但就我个人而言,根据我的回答,我会使用
=
Answer@JonSkeet如果你想做一个类似字符串[0]的比较!='1'. 因为它似乎不起作用。Thanks@omachu23:是的,它绝对有效。不清楚你到底在做什么,你期望什么,或者发生了什么。我建议你问一个新问题,用一个简单的句子。