【问题标题】:Best practices for comparising strings [duplicate]比较字符串的最佳实践 [重复]
【发布时间】:2019-11-20 17:23:44
【问题描述】:

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

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

【问题讨论】:

标签: c#


【解决方案1】:

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

是使用==还是Equals,对于字符串来说,有点个人喜好。我个人更喜欢==,因为它更具可读性(在我看来)并且打字时间短得多。

【讨论】:

    【解决方案2】:

    string 真的是System.String,更改由编译器为您完成。 == 只需调用String.Equals

    【讨论】:

      【解决方案3】:

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

      如果您不忽略大小写,那么string1 == string2 是最合适的,因为您不必像在此处那样检查任一值是否为 null:string x = null;x.Equals("junk");

      如果你想忽略大小写(所以STRING 等于string),使用这个:

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

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

      【讨论】:

        【解决方案4】:

        它们是相同的。 (虽然 Equals 有一些覆盖,但我假设你不是在谈论它们)。

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

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

        【讨论】:

          【解决方案5】:

          Stringstring 在内部是一样的。

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

          【讨论】:

            【解决方案6】:

            根据Framework Guidelines(或者Effective C#我忘了是哪一个了)当你想使用类时最好使用String,而当你想声明一个字符串类型时最好使用string:

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

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

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

            【讨论】:

              【解决方案7】:

              由于 C# 具有运算符重载并且 ==!= 被重载,因此修改代码的人应该知道检查运算符 ==!= 是否重载,然后再假设它是重载的进行对象比较。

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

              if( (object)a == b )
              

              【讨论】:

                猜你喜欢
                • 2017-12-01
                • 2012-09-25
                • 2011-01-10
                • 2011-03-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多