2011-05-17 194 views
3

可能重复:
Using == or Equals for string comparison
Are string.Equals() and == operator really same?C#字符串比较?

我学会了Java的第一个和几个绝对之一是,你永远不使用==来比较两个字符串是否相等,而不是有等号方法。因此,当我在C#年前登陆并注意到对象仍然具有Equals方法时,我认为该规则仍然适用。

现在,我要通过一个前同事的代码,我到处寻找片段是这样的:

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

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

我坚持使用旧的Java习惯吗?或者我的同事不在身边,这是件好事吗?

P.S.无论你对字符串进行比较的答案如何,我都会意识到上述将会更好地表述为s.BeginsWith("GBCI"),但这完全是另一回事。

+0

关于PS。这将是如果(s.BeginsWith(“GBCI_”)== true)。这样好多了。 – David 2011-05-17 19:29:12

+0

甚至'如果(s.BeginsWith(“GBCI _”))' – BoltClock 2011-05-17 19:29:49

+0

我更喜欢BoltClock的方式。如果它返回一个布尔值,为什么要比较一个布尔值来获得另一个布尔值?行'x == true'将返回完全相同的东西,只是'x'(说x是一个布尔当然) – 2011-05-17 19:34:39

回答

8

在C#中,字符串==的比较比较它们的值而不是它们的引用。详情请参阅this section of the C# spec

因此,使用它就像工作正常;你的同事是清醒而清醒的。

0

另请注意,看看this链接。

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