// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2023 Kybernetik // using System.Collections.Generic; namespace Animancer { /// /// An which ignores overloaded equality operators so it is faster than /// for types derived from . /// /// /// This class is used in by default. /// /// Documentation: Performance /// /// https://kybernetik.com.au/animancer/api/Animancer/FastComparer /// public sealed class FastComparer : IEqualityComparer { /************************************************************************************************************************/ /// Singleton instance. public static readonly FastComparer Instance = new FastComparer(); /// Calls . bool IEqualityComparer.Equals(object x, object y) => Equals(x, y); /// Calls . int IEqualityComparer.GetHashCode(object obj) => obj.GetHashCode(); /************************************************************************************************************************/ } /// /// An which uses to be even faster than /// . Unfortunately this means it will not work for boxed value types (such as enums). /// /// /// This class can be used in . /// /// Documentation: Performance /// /// https://kybernetik.com.au/animancer/api/Animancer/FastReferenceComparer /// public sealed class FastReferenceComparer : IEqualityComparer { /************************************************************************************************************************/ /// Singleton instance. public static readonly FastReferenceComparer Instance = new FastReferenceComparer(); /// Calls . bool IEqualityComparer.Equals(object x, object y) => ReferenceEquals(x, y); /// Calls . int IEqualityComparer.GetHashCode(object obj) => obj.GetHashCode(); /************************************************************************************************************************/ } }