可能重复:
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")
,但这完全是另一回事。
关于PS。这将是如果(s.BeginsWith(“GBCI_”)== true)。这样好多了。 – David 2011-05-17 19:29:12
甚至'如果(s.BeginsWith(“GBCI _”))' – BoltClock 2011-05-17 19:29:49
我更喜欢BoltClock的方式。如果它返回一个布尔值,为什么要比较一个布尔值来获得另一个布尔值?行'x == true'将返回完全相同的东西,只是'x'(说x是一个布尔当然) – 2011-05-17 19:34:39