Skip to content

Commit 8af7f18

Browse files
committed
Use static ReferenceComparer for comparisons
1 parent 25bc518 commit 8af7f18

File tree

4 files changed

+8
-20
lines changed

4 files changed

+8
-20
lines changed

src/NHibernate/Collection/AbstractPersistentCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ protected virtual ICollection GetOrphans(ICollection oldElements, ICollection cu
741741
return oldElements;
742742
}
743743

744-
if (currentElements.Count == oldElements.Count && currentElements.Cast<object>().SequenceEqual(oldElements.Cast<object>(), new IdentityEqualityComparer()))
744+
if (currentElements.Count == oldElements.Count && currentElements.Cast<object>().SequenceEqual(oldElements.Cast<object>(), ReferenceComparer<object>.Instance))
745745
return Array.Empty<object>();
746746

747747
var persister = session.Factory.GetEntityPersister(entityName);

src/NHibernate/Proxy/Poco/BasicLazyInitializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace NHibernate.Proxy.Poco
1414
[Obsolete("DynamicProxy has been obsoleted, use static proxies instead (see StaticProxyFactory)")]
1515
public abstract class BasicLazyInitializer : AbstractLazyInitializer
1616
{
17-
private static readonly IEqualityComparer IdentityEqualityComparer = new IdentityEqualityComparer();
17+
private static readonly IEqualityComparer IdentityEqualityComparer = ReferenceComparer<object>.Instance;
1818

1919
internal System.Type persistentClass;
2020
protected internal MethodInfo getIdentifierMethod;

src/NHibernate/Transform/DistinctRootEntityResultTransformer.cs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Collections.Generic;
44
using System.Linq;
55
using System.Runtime.CompilerServices;
6+
using NHibernate.Util;
67

78
namespace NHibernate.Transform
89
{
@@ -12,19 +13,6 @@ public class DistinctRootEntityResultTransformer : IResultTransformer, ITupleSub
1213
private static readonly INHibernateLogger log = NHibernateLogger.For(typeof(DistinctRootEntityResultTransformer));
1314
internal static readonly DistinctRootEntityResultTransformer Instance = new DistinctRootEntityResultTransformer();
1415

15-
sealed class IdentityComparer<T> : IEqualityComparer<T>
16-
{
17-
public bool Equals(T x, T y)
18-
{
19-
return ReferenceEquals(x, y);
20-
}
21-
22-
public int GetHashCode(T obj)
23-
{
24-
return RuntimeHelpers.GetHashCode(obj);
25-
}
26-
}
27-
2816
public object TransformTuple(object[] tuple, string[] aliases)
2917
{
3018
return tuple[tuple.Length - 1];
@@ -36,7 +24,7 @@ public IList TransformList(IList list)
3624
return list;
3725

3826
IList result = (IList) Activator.CreateInstance(list.GetType());
39-
var distinct = new HashSet<object>(new IdentityComparer<object>());
27+
var distinct = new HashSet<object>(ReferenceComparer<object>.Instance);
4028

4129
for (int i = 0; i < list.Count; i++)
4230
{
@@ -54,9 +42,9 @@ public IList TransformList(IList list)
5442
return result;
5543
}
5644

57-
internal static List<T> TransformList<T>(IEnumerable<T> list)
45+
internal static List<T> TransformList<T>(IEnumerable<T> list) where T: class
5846
{
59-
var result = list.Distinct(new IdentityComparer<T>()).ToList();
47+
var result = list.Distinct(ReferenceComparer<T>.Instance).ToList();
6048
if (log.IsDebugEnabled())
6149
{
6250
log.Debug("transformed: {0} rows to: {1} distinct results", list.Count(), result.Count);

src/NHibernate/Util/IdentityMap.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public sealed class IdentityMap : IDictionary, IDeserializationCallback
3939
/// <returns>A new IdentityMap based on a Hashtable.</returns>
4040
public static IDictionary Instantiate(int size)
4141
{
42-
return new IdentityMap(new Hashtable(size, new IdentityEqualityComparer()));
42+
return new IdentityMap(new Hashtable(size, ReferenceComparer<object>.Instance));
4343
}
4444

4545
/// <summary>
@@ -50,7 +50,7 @@ public static IDictionary Instantiate(int size)
5050
/// <returns>A new IdentityMap based on ListDictionary.</returns>
5151
public static IDictionary InstantiateSequenced(int size)
5252
{
53-
return new IdentityMap(new SequencedHashMap(size, new IdentityEqualityComparer()));
53+
return new IdentityMap(new SequencedHashMap(size, ReferenceComparer<object>.Instance));
5454
}
5555

5656
/// <summary>

0 commit comments

Comments
 (0)