C# ISTRUCTURALEQUATABLE KULLANıMı - GENEL BAKış

C# IStructuralEquatable Kullanımı - Genel Bakış

C# IStructuralEquatable Kullanımı - Genel Bakış

Blog Article

It's normally expected that if you implement IEquatable.Equals you will also override Object.Equals to be consistent. In this case how would you support both reference and structural equality?

Bu tür bir alınlaştırma, makale serlıklarının sıralamasının önemli olduğu durumlarda, yapısal benzerliklerin veya farklılıkların belirlenmesine yardımcı mümkün.

Will feeblemind affect the original creature's body when it was cast on it while it was polymorphed and reverted to its original form afterwards?

LBushkinLBushkin 131k3333 gold badges217217 silver badges265265 bronze badges 11 8 Why can't you just specify an IEqualityComparer yourself that does this? What does the IStructuralEquatable interface add to this?

I'm amazed that the most important reason is derece mentioned here. IEquatable was introduced mainly for structs for two reasons:

Your concern is that Object.GetHashCode() does not provide values that are stable and the concern is very valid kakım sevimli be seen in the first box headed by Caution in the documentation:

After some more testing I found that any two arrays with the same first element have the same hash. I still think this is strange behavior.

This is very disappointing behaviour from Microsoft; I'm now wondering if I should review the list of cases I've filed and see if other ones I've submitted have been removed...

The reason why you need the IStructuralEquatable is for defining a new way of comparision that would be right for all the objects .

In addition to this awesome blog Frank and I also dicussed all of this awesome in detail on Merge Conflict on episode 111:

Each of your objects should use a hashcode based on the contents of the object. If you have C# IStructuralEquatable Temel Özellikleri a value type containing 3 ints, use those when computing the hash code. Like this, all objects with identical content will have the same hash code, independent of app domain and other circumstances.

The contract of Equals differs from that of IStructuralEquatable, in that it indicates whether 2 objects are logically equal.

Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.

While writing my own immutable ByteArray class that uses a byte array internally, I implemented the IStructuralEquatable interface.

Report this page