2010-02-11 83 views
0

我在泛型類中構造了一個嵌套的內部類,我不確定是否正確編寫了此類。這裏有什麼明顯的錯誤嗎?在泛型類中比較嵌套的內部類

下面的代碼:

public class Foo<T> where T : IComparable<T> 
{ 
    protected class Bar : IComparable 
    { 
     private KeyValuePair<T, string> _keyval; 

     public Bar(KeyValuePair<T, string> kv) 
     { 
      _keyval = kv; 
     } 

     public int CompareTo(object obj) 
     { 
      T comparing = (T)obj; 
      return _keyval.Key.CompareTo(comparing.key); 
     } 
    } 

    private List<Bar> _bars; 

    public Foo() 
    { 
     _bars = new List<Bar>(); 
    } 

    public void AddKeyValInOrder(KeyValuePair<T, string> kv) 
    { 
     Bar toAdd = new Bar(kv); 

     int positionToAddAt = _bars.BinarySearch(toAdd); 
     if (positionToAddAt < 0) 
      positionToAddAt = positionToAddAt^-1; 

     _bars.Insert(positionToAddAt, toAdd); 
    } 
} 
+0

是它的工作還是有問題,你可以嗎??具體嗎? – 2010-02-11 07:13:36

+0

它的工作,但我不知道是否有一個更好的方法比內部CompareTo做一個演員。 – 2010-02-11 20:06:57

回答

2

首先,請注意,如果你不需要重複,SortedList<T>可能會有所幫助。

List<Bar>會希望比較Bar情況下,所以你的比較需要在Bar工作(最容易實現IComparable<Bar>執行:

protected class Bar : IComparable, IComparable<Bar> 
{ 
    private KeyValuePair<T, string> _keyval; 

    public Bar(KeyValuePair<T, string> kv) 
    { 
     _keyval = kv; 
    } 
    public int CompareTo(Bar other) 
    { 
     return _keyval.Key.CompareTo(other._keyval.Key); 
    } 
    int IComparable.CompareTo(object obj) 
    { 
     return CompareTo(obj as Bar); 
    } 
}