比较字符串的最佳做法

时间:2011-06-21 23:21:30

标签: c#

  

可能重复:
  Are string.Equals() and == operator really same?

我知道在c#中你可以将字符串与==和equals进行比较,但我想知道根据最佳实践我需要使用什么。请注意,我需要知道String和string

是否相同

7 个答案:

答案 0 :(得分:6)

Stringstring在C#中完全相同。 “最佳实践”将是相同的。

在字符串的情况下,是否使用==Equals是个人偏好。我个人更喜欢==,因为它更具可读性(在我看来),而且输入要短得多。

答案 1 :(得分:3)

string实际上是System.String,编译器会为您完成更改。 ==只需拨打String.Equals

答案 2 :(得分:2)

大多数.Net开发人员似乎喜欢使用关键字string而不是System.StringString

如果你没有忽略大小写,那么string1 == string2是最合适的,因为你不必像在这里那样检查任何值为null:string x = null;x.Equals("junk");

如果你想忽略这种情况(所以STRING等于string),请使用:

string.Equals (string1, string2, StringComparison.CurrentCultureIgnoreCase)

(或StringComparison中的其他值之一。)

答案 3 :(得分:0)

Stringstring在内部是相同的。

就个人而言,我会使用==来提高可读性。 ==.Equals之间没有性能差异; ==在幕后调用.Equals

答案 4 :(得分:0)

由于C#有运算符重载而且==,!=超载,责任应归于修改代码的人应该知道运算符==或!=是否过载,然后再假设它正在进行对象比较

注意: 如果您想进行参考比较,可以执行以下操作:

if( (object)a == b )

答案 5 :(得分:0)

他们是完全相同的。 (虽然Equals有一些覆盖,但我认为你不是在谈论它们。)

有关最佳做法,请咨询您的同事并使用他们所做的那些。它有助于在相同的代码库中保持一致。

如果你一个人工作,选择你喜欢的那个!

答案 6 :(得分:0)

根据框架指南(或有效C#我忘记了哪一个),当你想要声明字符串类型时,如果你想使用类和字符串,最好使用String:

string result = String.Format("You have {0} items.", items);

(虽然我会使用var结果,如果它是一个局部变量)

至于比较,我会使用String.Compare(),以便您可以使用各种比较,例如忽略大小写。