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
5 years ago
|
#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
|