@@ -43,9 +43,7 @@ public Dictionary(int capacity) : this(capacity, null) { }
43
43
44
44
public Dictionary ( IEqualityComparer < TKey > ? comparer ) : this ( 0 , comparer ) { }
45
45
46
- public Dictionary ( int capacity , IEqualityComparer < TKey > ? comparer ) : this ( 0 , comparer , false ) { }
47
-
48
- internal Dictionary ( int capacity , IEqualityComparer < TKey > ? comparer , bool useProvidedComparer )
46
+ public Dictionary ( int capacity , IEqualityComparer < TKey > ? comparer )
49
47
{
50
48
if ( capacity < 0 )
51
49
{
@@ -68,16 +66,13 @@ internal Dictionary(int capacity, IEqualityComparer<TKey>? comparer, bool usePro
68
66
{
69
67
_comparer = comparer ?? EqualityComparer < TKey > . Default ;
70
68
71
- if ( ! useProvidedComparer )
69
+ // Special-case EqualityComparer<string>.Default, StringComparer.Ordinal, and StringComparer.OrdinalIgnoreCase.
70
+ // We use a non-randomized comparer for improved perf, falling back to a randomized comparer if the
71
+ // hash buckets become unbalanced.
72
+ if ( typeof ( TKey ) == typeof ( string ) &&
73
+ NonRandomizedStringEqualityComparer . GetStringComparer ( _comparer ! ) is IEqualityComparer < string > stringComparer )
72
74
{
73
- // Special-case EqualityComparer<string>.Default, StringComparer.Ordinal, and StringComparer.OrdinalIgnoreCase.
74
- // We use a non-randomized comparer for improved perf, falling back to a randomized comparer if the
75
- // hash buckets become unbalanced.
76
- if ( typeof ( TKey ) == typeof ( string ) &&
77
- NonRandomizedStringEqualityComparer . GetStringComparer ( _comparer ! ) is IEqualityComparer < string > stringComparer )
78
- {
79
- _comparer = ( IEqualityComparer < TKey > ) stringComparer ;
80
- }
75
+ _comparer = ( IEqualityComparer < TKey > ) stringComparer ;
81
76
}
82
77
}
83
78
else if ( comparer is not null && // first check for null to avoid forcing default comparer instantiation unnecessarily
0 commit comments