This project adheres to Semantic Versioning.
- More nullable reference type support.
- Natural string comparers that compare numeric substrings as numeric values.
- Note:
GetHashCodefor natural string comparers will allocate memory on all platforms older than .NET Core 3.0, including all versions of .NET Framework. - Note:
GetHashCodewill cause extra collisions when used with invariant cultures on platforms that only support .NET Standard 1.x (except .NET Framework). This means Xamarin.Android 7.1, Xamarin.iOS 10.8, and Xamarin.Mac 3.0 will have pathologically inefficientGetHashCodeimplementations for natural string comparers using an invariant culture. Xamarin.Android 8.0+, Xamarin.iOS 10.14+, and Xamarin.Mac 3.8+ will work properly.
- Note:
- Bump Rx and Ix dependencies.
- Explicity support net461 so that shim dlls are not required on that platform.
ignoreOrderoption forEquateSequenceto ignore order of elements when comparing for sequence equality.
IFullComparer<string>.ToStringComparerto easily create aStringComparerinstance.FixedStringComparerto provideStringComparerinstances that do not throw onnull.- Nullable reference type checking.
- Added
AdvancedComparerBase<T>andAdvancedEqualityComparerBase<T>for advanced scenarios.
- Static constructors for derived types are always invoked (so they set
DefaultComparer), even if an instance is not ever created. #34
- Hash algorithm is now Murmur3.
See v6 upgrade guide.
- Some type names used in the builder pattern. Most users will not be affected.
- Plain
IComparer<T>types must now declare aGetHashCodeimplementation to be used withNito.Comparers. ReferenceEqualityCompareris now restricted to reference types.
- "Fix comparer" extension methods to apply default
nullhandling to misbehaving comparers.
BinarySearchoverloads that allowed defining the comparer inline.
- Source link support.
- Corner cases for comparers and equality comparers.
IEqualityComparer.GetHashCodewhen called with an unexpected type.- Stack overflow when
IComparer.Compareis called for objects of different types that each forward theirIComparableimplementation to that method. - Stack overflow in
EqualityComparerBase.IEqualityComparer.Equalscorner case. - Fixed #12: when comparison methods are passed invalid types (using the nongeneric
IEqualityComparerorIComparerinterfaces), they could throwInvalidCastExceptionorNullReferenceException.
- Revert public signing.
- Public signing.
- Work around .NET Core SDK bug.
- Build scripts.
See v5 upgrade guide.
- NuGet package is now
Nito.Comparersinstead ofComparers. - Better names for types used in the "builder" pattern for comparers.
allowNullsparameter name changed tospecialNullHandling.- Equality comparer types moved from
Nito.EqualityComparersnamespace toNito.Comparers.
- The anonymous comparers have been removed.
*Descendingmethods have been removed; use thedescendingparameter instead.
- Bug in determining default comparer for sequences.
- WPA target.
- LINQ/Rx/Ix support with implicit type detection.
- PCL targets.
- Better hash code implementations.
- Equality comparers.
- New targets: .NET 4.5, Silverlight 4 and 5, Metro, and XBox.
CompoundComparer.GetHashCode
- NuGet package metadata.
- Removed contract exceptions when passing
nulltoGetHashCode.
- More consistent API.
- Sequence comparers.
- Comparison operators.
- Ability to override how
nullis treated.
ToString()implementations to all comparers to assist debugging.
Initial release.