Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b7769c4

Browse files
committedApr 21, 2024·
Avoid unnecessary lazy init in StructuralComparisons
Move the fields to the target types and make them readonly instead of manually lazy.
1 parent a3dc133 commit b7769c4

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed
 

‎src/libraries/System.Collections/src/System/Collections/StructuralComparisons.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,15 @@ namespace System.Collections
77
{
88
public static class StructuralComparisons
99
{
10-
private static volatile IComparer? s_StructuralComparer;
11-
private static volatile IEqualityComparer? s_StructuralEqualityComparer;
10+
public static IComparer StructuralComparer => System.Collections.StructuralComparer.s_instance
1211

13-
public static IComparer StructuralComparer => s_StructuralComparer ??= new StructuralComparer();
14-
15-
public static IEqualityComparer StructuralEqualityComparer => s_StructuralEqualityComparer ??= new StructuralEqualityComparer();
12+
public static IEqualityComparer StructuralEqualityComparer => System.Collections.StructuralEqualityComparer.s_instance;
1613
}
1714

1815
internal sealed class StructuralEqualityComparer : IEqualityComparer
1916
{
17+
internal static readonly StructuralEqualityComparer s_instance = new();
18+
2019
public new bool Equals(object? x, object? y)
2120
{
2221
if (x != null)
@@ -58,6 +57,8 @@ public int GetHashCode(object obj)
5857

5958
internal sealed class StructuralComparer : IComparer
6059
{
60+
internal static readonly StructuralComparer s_instance = new();
61+
6162
public int Compare(object? x, object? y)
6263
{
6364
if (x == null) return y == null ? 0 : -1;

0 commit comments

Comments
 (0)
Please sign in to comment.