ReferenceComparer
ReferenceComparer<T>.Instance compares instances by their reference id.
object o1 = new object(), o2 = new object();
object[] objs = new[] { o1, o2 };
IComparer<object> comparer = ReferenceComparer<object>.Instance;
Array.Sort(objs, comparer);
ReferenceComparer.Create(type) creates comparer with run-time type argument.
object o1 = new object(), o2 = new object();
object[] objs = new[] { o1, o2 };
IComparer<object> comparer =
(IComparer<object>)
ReferenceComparer.Create(typeof(object));
Array.Sort(objs, comparer);
ReferenceEqualityComparer
ReferenceEqualityComparer<T>.Instance compares instances by their reference id.
object o1 = new object(), o2 = new object();
IEqualityComparer<object> comparer =
ReferenceEqualityComparer<object>.Instance;
bool equal = comparer.Equals(o1, o2);
ReferenceEqualityComparer.Create(type) creates comparer with run-time type argument.
object o1 = new object(), o2 = new object();
IEqualityComparer<object> comparer =
(IEqualityComparer<object>)
Avalanche.Utilities.ReferenceEqualityComparer.Create(typeof(object));
bool equal = comparer.Equals(o1, o2);
Full Example
Full example
using System;
using System.Collections.Generic;
using Avalanche.Utilities;
class referencecomparer
{
public static void Run()
{
{
// <01>
object o1 = new object(), o2 = new object();
object[] objs = new[] { o1, o2 };
IComparer<object> comparer = ReferenceComparer<object>.Instance;
Array.Sort(objs, comparer);
// </01>
Print(objs);
}
{
// <02>
object o1 = new object(), o2 = new object();
object[] objs = new[] { o1, o2 };
IComparer<object> comparer =
(IComparer<object>)
ReferenceComparer.Create(typeof(object));
Array.Sort(objs, comparer);
// </02>
Print(objs);
}
{
// <03>
object o1 = new object(), o2 = new object();
IEqualityComparer<object> comparer =
ReferenceEqualityComparer<object>.Instance;
bool equal = comparer.Equals(o1, o2);
// </03>
}
{
// <04>
object o1 = new object(), o2 = new object();
IEqualityComparer<object> comparer =
(IEqualityComparer<object>)
Avalanche.Utilities.ReferenceEqualityComparer.Create(typeof(object));
bool equal = comparer.Equals(o1, o2);
// </04>
}
}
static void Print<T>(IEnumerable<T> enumr) => Console.WriteLine(String.Join(", ", enumr));
}