“字符串”;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:是的,它绝对有效。不清楚你到底在做什么,你期望什么,或者发生了什么。我建议你问一个新问题,用一个简单的句子。