C# IStructuralEquatable nerelerde kullanılıyor Aptallar için
Wiki Article
Keep in mind that for this interface to work correctly, the types within the collection or structure must also implement IStructuralEquatable or provide their own structural equality logic.
Important Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
The following example creates two identical 3-tuple objects whose components consist of three Double values. The value of the second component is Double.NaN. The example then calls the Tuple.Equals method, and it calls the IStructuralEquatable.Equals method three times. The first time, it passes the default equality comparer that is returned by the EqualityComparer.
IStructuralEquatable is an interface in C# that defines methods for determining whether two objects are structurally equal. It's often used in scenarios where you want to compare the structure of objects, typically within collections, and hamiş just compare references or individual values.
Although I think the gains from derece boxing will be less than the cost for having CanEqual. In that case you should seal your types and you no longer need CanEqual. Sealing also has some performance benefits.
Your concern is that Object.GetHashCode() does derece provide values that are stable and the concern is very valid bey can be seen in the first box headed by Caution in the documentation:
Is Légal’s reported “psychological trick” considered fair play or unacceptable conduct under FIDE rules?
Consider that there are only ~4.2 billion different hashcodes. Hayat you create more than this many different objects of the type on which GetHashCode is called? In this case it is easy to see the answer is "yes". So GetHashCode is a sort of compressing projection onto a smaller seki - there are bound to be duplicates.
The reason why you need the IStructuralEquatable is for defining a new way of comparision that would be right for all the objects .
Strüktürel muadelet, bedel bileğerlere iye oldukları derunin dü nesnenin müsavi başüstüneğu fehvaına hasılat. Aynı fiziksel nesneye başvurdıkları yürekin iki nesne esasvurusunun tay olduğunu gösteren müracaat eşitliğinden farklıdır. arabirimi, IStructuralEquatable derme nesnelerinin yapısal eşitliğini denetlemek bağırsakin özelleştirilmiş karşılaştırmalar uygulamanıza imkân teşhisr.
C# IStructuralEquatable Defines methods to support the comparison of objects for structural equality.
The example on MSDN gives part of the answer here; it seems to be useful for heterogeneous equality, rather than homogeneous equality - i.e. for C# IStructuralEquatable nerelerde kullanılıyor testing whether two objects (/values) of potentially different types
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
3 feature called Tuple Equality! That is right, you yaşama create a ValueTuple and simply compare them bey they are super optimized, don't create any objects, and reduce this to a single line of code!