我在学习C#,但在字符串比较中发现了一些意外情况,不是很理解。
请问有人可以解释一下为什么在下面的代码中,单个字符的比较结果与长度为一个字符的字符串比较结果相反吗?
我原本认为 "9" < "="
将会是 true
(因为数字 '9' 的 Unicode 编码(57)小于 '=' 的 Unicode 编码(61)),但实际上是 false...字符串比较的逻辑是什么,为什么会与比较字符不同呢?
代码:
bool resChComp = '9' < '=';
bool resStrComp = String.Compare("9", "=") < 0;
Console.WriteLine($"\n'9' < '=' : {resChComp}, \"9\" < \"=\" : { resStrComp }");
输出:
'9' < '=' : True, "9" < "=" : False
char1 - char2
。字符串通常包含多个字符,而String.CompareTo
使用不同的规则,这些规则在文档中有提到。 - Tim SchmelterString.Compare("9", "=", StringComparison.Ordinal)
- Jonathon Chase