C# 比较字符串的最佳实践

C# 比较字符串的最佳实践,c#,C#,可能重复: 我知道在c#中,可以将字符串与==和equals进行比较,但我想知道根据最佳实践,我需要使用什么。注意,我需要知道String和String是否相同,String和String在C#中是否完全相同。“最佳做法”是相同的 对于字符串,是使用=还是使用Equals,多少有些个人偏好。我个人更喜欢==,因为它可读性更强(在我看来),而且打字时间更短。string实际上是系统。string,更改由编译器为您完成=只调用String.Equals大多数.Net开发人员似乎喜欢使用关键字Str

可能重复:


我知道在c#中,可以将字符串与==和equals进行比较,但我想知道根据最佳实践,我需要使用什么。注意,我需要知道String和String是否相同,String和String在C#中是否完全相同。“最佳做法”是相同的


对于字符串,是使用
=
还是使用
Equals
,多少有些个人偏好。我个人更喜欢
==
,因为它可读性更强(在我看来),而且打字时间更短。

string
实际上是
系统。string
,更改由编译器为您完成
=
只调用
String.Equals

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

如果您没有忽略大小写,那么
string1==string2
是最合适的,因为您不必像这里那样检查任何一个值是否为null:
string x=null;x、 等于(“垃圾”)

如果要忽略大小写(因此
STRING
等于
STRING
),请使用以下命令:

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

(或中的其他值之一。)

String
String
在内部是相同的

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

因为C#具有运算符重载和
=
=过载。修改代码的人应负责检查操作员是
==
还是
=
在假定正在进行对象比较之前重载

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

if( (object)a == b )
它们是相同的。(虽然Equals有一些覆盖,但我想你不是在谈论它们)

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


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

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

string result = String.Format("You have {0} items.", items);
(虽然如果是局部变量,我会使用var result)

至于比较,我将使用String.Compare()以便您可以使用各种比较,如ignore case。