Home >Backend Development >C++ >How to Maintain Consistent Object Equality and Hashing in C#?
The consistency maintenance of the object equivalent and the hash value in the c#
Rewill the Equals method in the FOO class to compare the FOOID attribute to ensure the consistency of the object equal. However, rewriting the GethashCode method is also very important to comply with the rules of these two methods.
The importance of rewriting Gethashcode
When the object is used as a key in data structures such as dictionary or hash set, Gethashcode is used to determine which barrel should be placed in which barrel should be placed. If the hash code of the two objects (defined by EQUALS) should be considered different, they may never be compared, resulting in incorrect evaluation of equal nature.
In this case, the recommendation of Gethashcode is:
This is consistent with the logic of the EQUALS method. It asserts that the equal nature of FOOID means the equivalent of all hash codes.Advanced consideration
<code class="language-csharp">public override int GetHashCode() => base.GetHashCode();</code>
For more complicated objects involving multiple attributes in the same nature, please consider using the HashCode type in the modern framework or implement the custom hash code calculation:
Add convenience
For the sake of convenience, you can consider implementation == and! = The calculation symbol to supplement the rewritten Equals and Gethashcode methods:
<code class="language-csharp">public override int GetHashCode() { unchecked { int hash = 13; hash = (hash * 7) + FooId.GetHashCode(); hash = (hash * 7) + FooName.GetHashCode(); return hash; } }</code>
By observing these principles, it can ensure the consistent behavior of equal nature and hash, thereby improving the reliability and performance of the application.
The above is the detailed content of How to Maintain Consistent Object Equality and Hashing in C#?. For more information, please follow other related articles on the PHP Chinese website!