You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.0 KiB
28 lines
1.0 KiB
#if !NET_4_6 |
|
using System.Collections.Generic; |
|
|
|
namespace LinqInternal.Collections |
|
{ |
|
internal class KeyValuePairEqualityComparer<TKey, TValue> : IEqualityComparer<KeyValuePair<TKey, TValue>> |
|
{ |
|
private readonly IEqualityComparer<TKey> _keyComparer; |
|
private readonly IEqualityComparer<TValue> _valueComparer; |
|
|
|
public KeyValuePairEqualityComparer(IEqualityComparer<TKey> keyComparer, IEqualityComparer<TValue> valueComparer) |
|
{ |
|
_keyComparer = keyComparer ?? EqualityComparer<TKey>.Default; |
|
_valueComparer = valueComparer ?? EqualityComparer<TValue>.Default; |
|
} |
|
|
|
public bool Equals(KeyValuePair<TKey, TValue> x, KeyValuePair<TKey, TValue> y) |
|
{ |
|
return _keyComparer.Equals(x.Key, y.Key) && _valueComparer.Equals(x.Value, y.Value); |
|
} |
|
|
|
public int GetHashCode(KeyValuePair<TKey, TValue> obj) |
|
{ |
|
return (_keyComparer.GetHashCode(obj.Key) * 13) + _valueComparer.GetHashCode(obj.Value); |
|
} |
|
} |
|
} |
|
#endif |