using System.Collections.Generic; using System.Runtime.CompilerServices; namespace Unity.VisualScripting { // Implementation From Roslyn: // http://source.roslyn.io/#microsoft.codeanalysis/InternalUtilities/ReferenceEqualityComparer.cs public class ReferenceEqualityComparer : IEqualityComparer<object> { private ReferenceEqualityComparer() { } bool IEqualityComparer<object>.Equals(object a, object b) { return a == b; } int IEqualityComparer<object>.GetHashCode(object a) { return GetHashCode(a); } public static readonly ReferenceEqualityComparer Instance = new ReferenceEqualityComparer(); public static int GetHashCode(object a) { return RuntimeHelpers.GetHashCode(a); } } public class ReferenceEqualityComparer<T> : IEqualityComparer<T> { private ReferenceEqualityComparer() { } bool IEqualityComparer<T>.Equals(T a, T b) { return ReferenceEquals(a, b); } int IEqualityComparer<T>.GetHashCode(T a) { return GetHashCode(a); } public static readonly ReferenceEqualityComparer<T> Instance = new ReferenceEqualityComparer<T>(); public static int GetHashCode(T a) { return RuntimeHelpers.GetHashCode(a); } } }