【发布时间】:2019-11-20 17:23:44
【问题描述】:
我知道在 c# 中您可以将字符串与 == 和 equals 进行比较,但我想知道根据最佳实践我需要使用什么。请注意,我需要知道 String 和 string 是否相同
【问题讨论】:
标签: c#
我知道在 c# 中您可以将字符串与 == 和 equals 进行比较,但我想知道根据最佳实践我需要使用什么。请注意,我需要知道 String 和 string 是否相同
【问题讨论】:
标签: c#
String 和 string 在 C# 中完全相同。 “最佳实践”将是相同的。
是使用==还是Equals,对于字符串来说,有点个人喜好。我个人更喜欢==,因为它更具可读性(在我看来)并且打字时间短得多。
【讨论】:
string 真的是System.String,更改由编译器为您完成。 == 只需调用String.Equals。
【讨论】:
大多数 .Net 开发人员似乎喜欢使用关键字 string 而不是 System.String 或 String。
如果您不忽略大小写,那么string1 == string2 是最合适的,因为您不必像在此处那样检查任一值是否为 null:string x = null;x.Equals("junk");。
如果你想忽略大小写(所以STRING 等于string),使用这个:
string.Equals (string1, string2, StringComparison.CurrentCultureIgnoreCase)
(或StringComparison 中的其他值之一。)
【讨论】:
它们是相同的。 (虽然 Equals 有一些覆盖,但我假设你不是在谈论它们)。
有关最佳做法,请咨询您的同事并使用他们所做的。它有助于在同一个代码库中保持一致。
如果你一个人工作,选择你更喜欢的一个!
【讨论】:
String 和 string 在内部是一样的。
就个人而言,我会使用== 来提高可读性。 == 和 .Equals 之间没有性能差异; == 在幕后致电.Equals。
【讨论】:
根据Framework Guidelines(或者Effective C#我忘了是哪一个了)当你想使用类时最好使用String,而当你想声明一个字符串类型时最好使用string:
string result = String.Format("You have {0} items.", items);
(虽然我会使用 var 结果,如果它是一个局部变量)
至于比较,我会使用 String.Compare() 以便您可以使用各种比较,例如忽略大小写。
【讨论】:
由于 C# 具有运算符重载并且 ==、!= 被重载,因此修改代码的人应该知道检查运算符 == 或 != 是否重载,然后再假设它是重载的进行对象比较。
注意: 如果您想进行参考比较,可以执行以下操作:
if( (object)a == b )
【讨论】: