C#字符串比较?

Cor*_*urn 3 c# string

可能重复:
使用==或等于字符串比较
string.Equals()和==运算符是否真的相同?

我首先学习了Java,其中一个绝对是你永远不会使用==来比较两个字符串是否相等,而是使用equals方法.因此,当我多年前登陆C#并注意到对象仍然使用Equals方法时,我认为规则仍然适用.

现在我正在通过一个前同事的代码,我发现这样的片段到处都是:

if (s.Substring(0, s.IndexOf("_")) == "GBCI") {...}
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,==将比较这两个结果之间的地址,并且由于函数返回了前半部分,这将失败,因为结果与右边的常量不同.

我是否坚持旧的Java习惯?或者我的同事不在身边是一件好事吗?

PS无论你对比较字符串的答案如何,我都会意识到上面会更好地说明s.BeginsWith("GBCI"),但这完全是另一回事.

Bol*_*ock 8

在C#中,==字符串的比较会比较它们的值而不是它们的引用.有关详细信息,请参阅C#规范的此部分.

所以使用它就好了; 你的同事是理智而清醒的.