2016-11-16 11 views
1

私は2つのキー値の比較を持っています - どちらも私は比較するためにキーを使用しています。 値にジェネリックを使用できますか?2つのクラスを持つ代わりに、1つしか持てませんか?代わりに、私は私がする比較器がKeyValuePairの値型のみが異なるとして、あなたが一般化する値型の型パラメータを使用できる唯一の1クラスKeyValueComparer(キーに基づいて)

class KvpComparer : IEqualityComparer < KeyValuePair < string, T>> 
{ 
... 
} 

class KvpComparer : IEqualityComparer<KeyValuePair<string, Tuple<string, string>>> 
{ 
    public bool Equals(KeyValuePair<string, Tuple<string, string>> x, KeyValuePair<string, Tuple<string, string>> y) 
    { 
     return x.Key.Equals(y.Key); 
    } 

    public int GetHashCode(KeyValuePair<string, Tuple<string, string>> obj) 
    { 
     return obj.Key.GetHashCode(); 
    } 
} 

class KvpComparer2 : IEqualityComparer<KeyValuePair<string, string>> 
{ 
    public bool Equals(KeyValuePair<string, string> x, KeyValuePair<string, string> y) 
    { 
     return x.Key.Equals(y.Key); 
    } 

    public int GetHashCode(KeyValuePair<string, string> obj) 
    { 
     return obj.Key.GetHashCode(); 
    } 
} 

答えて

3

を持っていることがしたい以下のクラスのそう

2つの比較者を以下のように1つの汎用タイプに変換します。

class KvpComparer<T> : IEqualityComparer<KeyValuePair<string,T>> where T : class 
{ 
    public bool Equals(KeyValuePair<string,T> x, KeyValuePair<string,T> y) 
    { 
     return x.Key.Equals(y.Key); 
    } 

    public int GetHashCode(KeyValuePair<string, T> obj) 
    { 
     return obj.Key.GetHashCode(); 
    } 
} 
+0

ありがとう、Codor! – Anand

関連する問題