Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

4
  • Thanks Anders, I am using it only for Contains method comparison. If I combine only two strings for the hashcode, wouldnt the hashcodes be same if the two values in objects are same? Would this mess up the comparisons, or does the GetHashCode have no affect on the comparison itself, and only impacts the performance Commented Sep 5, 2011 at 14:16
  • 1
    Others have already made this point, but I'd like to address it in a different way because it seems your intuition is stuck. Observe that GetHashCode() returns an int, which can take on only 2^32 different values. Your object, comprising 6 strings of arbitrary length, can obviously take on a far large number of values. Through this example we can easily see that GetHashCode() cannot possibly be a unique value for all possible values of your object. It must only satisfy this property: "if a.Equals(b) then a.GetHashCode()==b.GetHashCode()"; and notice that the "if" does NOT go both ways. Commented Sep 5, 2011 at 14:25
  • 1
    Practical considerations for GetHashCode() are that it be "good" and "fast". To make it "fast" I would try to avoid all memory allocation and string copying; to make it "good" is a subject of some nuance but in practice it suffices to swizzle together the GetHashCode() values of the sub-objects as @Jon suggests. I'll post ReSharper's suggestion as an "answer" so I can get code formatting. Commented Sep 5, 2011 at 14:29
  • Thanks Corey, I get it now. Sorry If my responses seemed noobish - as I didnt really get the actual way the GetHashCode works and is used in comparisons. I got it now. Commented Sep 5, 2011 at 14:31