2010-05-18 38 views
3

我在考慮使用OrderedDictionary。作爲一個關鍵,我想使用一個長的值(id),該值將是一個自定義對象。C#Ordered dictionary index

我使用OrderedDictionary,因爲我想通過它的Id來獲取對象,並且我想通過它的'collection'索引獲取對象。

我想用OrderedDictionary這樣的:

public void AddObject(MyObject obj) 
{ 
    _dict.Add(obj.Id, obj); // dict is declared as OrderedDictionary _dict = new OrderedDictionary(); 
} 

別的地方在我的代碼我有類似這樣的:

public MyObject GetNextObject() 
{ 
    /* In my code keep track of the current index */ 

    _currentIndex++; 
    // check _currentindex doesn't exceed the _questions bounds 
    return _dict[_currentIndex] as MyObject; 
} 

現在我的問題是。在最後一個方法中,我使用了一個索引。想象一下_currentIndex被設置爲10,但我也有一個id爲10的對象。我已經將Id設置爲一個鍵。

MyObject的Id類型是long ?.這是否出錯?

回答

2

更新爲我從未注意到的OrderedDictionary部分!索引器有覆蓋object,它將通過鍵檢索值,或int,它將按索引檢索值。如果您想要通過密鑰來檢索索引,則需要將索引轉換爲對象。

_dict[(object)_currentIndex] as MyObject; 
+0

所以,當我通過_currentIndex它看到它是一個int,因此它知道尋找索引,而不是ID,因爲類型長的ID? ? – Martijn 2010-05-18 09:23:13

+0

@Martin,對不起,我從來沒有注意到你使用的是OrderedDictionary,請看我的更新答案。 – James 2010-05-18 09:23:44

+0

沒問題。但_currentIndex是一個int,用於通過索引獲取MyObject,而不是通過Id獲取。所以我想我不必投射_currentIndex?我只需要在通過id獲取MyObject時投射索引器,對吧? – Martijn 2010-05-18 09:28:35