C# 字符串比较?

C# 字符串比较?,c#,string,C#,String,可能的重复项: 我首先学习了Java,为数不多的绝对值之一是,如果两个字符串相等,则从不使用==进行比较,而是使用equals方法。因此,当我在几年前登陆C#并注意到对象仍然有一个Equals方法时,我假设这个规则仍然适用 现在我正在浏览一位前同事的代码,我发现到处都有这样的代码片段: if (s.Substring(0, s.IndexOf("_")) == "GBCI") {...} 如果我没有记错,==将比较这两个结果之间的地址,因为前半部分是由函数返回的,这将失败,因为结果与右边的

可能的重复项:

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

现在我正在浏览一位前同事的代码,我发现到处都有这样的代码片段:

if (s.Substring(0, s.IndexOf("_")) == "GBCI") {...}
如果我没有记错,==将比较这两个结果之间的地址,因为前半部分是由函数返回的,这将失败,因为结果与右边的常量地址不同

我是否还保留着旧的Java习惯?还是说我的同事不在身边是件好事

另外,不管你对比较字符串的回答是什么,我确实意识到上面的表述最好是
S.BeginsWith(“GBCI”)
,但那完全是另外一回事。

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

所以像那样使用它很好;你的同事头脑清醒。

另一个注意事项是,看看链接


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

关于PS。如果(s.BeginsWith(“GBCI”)==true,则为。如果(s.BeginsWith(“GBCI”)我更喜欢BoltClock的方式,那就更好了。如果它返回bool,为什么要将其与bool进行比较以获得另一个bool?行'x==true'将返回与简单的'x'完全相同的东西(当然说x是bool)哦,我知道你改变了什么,主要是常数字符串中涉及的u。我当然明白你为什么认为它应该在那里,但你不知道(我也不责怪你),下划线并不重要。所讨论的字符串要么以GBCI开头,要么以CSB开头,只需找出哪一个。