在阅读关于C#字符串比较的信息时,我发现有许多比较两个字符串是否相等的方法。
我习惯使用C++中的==
运算符,但我了解到如果将对象与字符串进行比较,==
会默认返回引用值(或类似的内容)。
然后对于Equals()
方法,假设我有两个字符串。
string s1 = null;
string s2 = "Hello";
如果我执行 s1.Equals(s2);,由于第一个字符串为 null,会出现 null 引用异常。但是如果我执行 string.equals(s1,s2),当其中一个值为 null 时,它只会返回 false,当两个值都为 null 时,它将返回 true,因为这两个字符串在相等性上相同,即它们都为 null。
因此,总是使用 string.equals() 方法是否有任何理由呢?另外一件事是,如果我在字符串中输入带有大写 S 的 string.equals(),如此输入仍然会以小写字母运行,但 IDE(Visual Studio 2015)会告诉我可以简化它并将其转换为小写字母 s。为什么呢?
==
的理解是错误的。对于字符串来说,==
与string.Equals()
是相同的。但这在 Java 中并不成立,这可能是你混淆的原因。 - Glorin Oakenfoot.Equals
οΦ¹δΗéstatic string.Equals(s1, s2)
γ¦Ηεê¨ψIJ - xanatosString.Compare
与String.Equals
相比会有严重的性能损失。如果你需要在紧密循环中检查成千上万个字符串,这可能并不重要,但在执行琐碎操作时可能非常重要。检查相等性比比较快得多。 - Jcl