C# 字符串比较

本文关键字:比较 字符串 | 更新日期: 2023-09-27 17:57:00

可能的重复项:
使用 == 或等于进行字符串比较
是字符串。等于()和==运算符真的一样吗?

我首先学习了Java,为数不多的绝对之一是你从不使用==来比较两个字符串是否相等,而是使用equals方法。因此,当我几年前登陆 C# 并注意到对象仍然具有 Equals 方法时,我假设该规则仍然适用。

现在我正在浏览一个前同事的代码,我到处都能找到这样的片段:

if (s.Substring(0, s.IndexOf("_")) == "GBCI") {...}

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

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

附言不管你对比较字符串的回答如何,我确实意识到以上内容最好表述为s.BeginsWith("GBCI"),但这完全是另一回事。

C# 字符串比较

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

所以像这样使用它很好;你的同事是理智和清醒的。

作为另一个注意事项,请查看此链接。

您可以使用==但是compareTo是唯一的,因为它将根据字符串的不同(或不不同)的方式返回一个整数。