// 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();
/************************************************************************************************************************/
}
}