Enhanced C#
Language of your choice: library documentation
|
You'd think the .NET framework would have a built-in method–even a CIL opcode–to bitwise-compare two values. Not supporting bitwise compare is, in my opinion, one of several mind-bogglingly dumb decisions in the CLR. Instead, all you can do is call ValueComparer.Default.Equals(a, b). More...
You'd think the .NET framework would have a built-in method–even a CIL opcode–to bitwise-compare two values. Not supporting bitwise compare is, in my opinion, one of several mind-bogglingly dumb decisions in the CLR. Instead, all you can do is call ValueComparer.Default.Equals(a, b).
The Default.Equals method is a virtual function call, but as far as I know, in generic code there is no way to avoid this while supporting any type T.
If T is a reference type, it compares the two references using ReferenceComparer. If T is a struct then this class does not currently perform a bitwise comparison, as it just uses EqualityComparer(T).Default. In the future somebody should write a fast "unsafe" bitwise comparer for value types that do not implement IEquatable, because the default implementation of Equals is documented to use reflection, so we can expect that it is extremely slow.
Public static fields | |
static readonly EqualityComparer< T > | Default = GetComparer() |
Static Public Member Functions | |
static bool | Equals (T a, T b) |