Using == or Equals for string comparison

后端 未结 5 1090
抹茶落季
抹茶落季 2020-12-14 23:48

In some languages (e.g. C++) you can\'t use operators like == for string comparisons as that would compare the address of the string object, and not the string itself. Howev

相关标签:
5条回答
  • 2020-12-15 00:21

    Best-practise-wise, I would tend to always use an Equals() function for string comparison. This makes it clear when someone else reads your code that you specifically want the strings compared.

    0 讨论(0)
  • 2020-12-15 00:24

    generally speaking, == does pointer equality, while .equals checks whether the attributes are equal. So if you did something like

    a = 'a';
    b = 'a';
    bool c = (a == b);
    bool d = (a.Equals(b))
    

    then c should return false and d should be true.

    0 讨论(0)
  • 2020-12-15 00:29

    I wouldn't use:

    aa.Equals(bb)
    

    unless I knew aa couldn't possibly be null. I might use:

    string.Equals(aa,bb)
    

    But I'd mainly use that it I wanted to use one of the specific StringComparison modes (invariant, ordinal, case-insensitive, etc). Although I might also use the StringComparer implementations, since they are a bit easier to abstract (for example, to pass into a Dictionary<string, Foo> for a case-insensitive ordinal dictionary). For general purpose usage,

    a == b
    

    is fine.

    0 讨论(0)
  • 2020-12-15 00:31

    This is the implementation of the operator:

        public static bool operator == (String a, String b) {
           return String.Equals(a, b);
        }
    

    Don't lose any sleep over this.

    0 讨论(0)
  • 2020-12-15 00:32

    There is no technical difference (unless aa is null). Use whatever looks better to you. In my opinion, using operator overloads makes the code clearer.

    Use functions when you need (or might need in future) their additional arguments (as in CompareTo())

    0 讨论(0)
提交回复
热议问题