2012-04-23 91 views
0

我想用Integer類型的鍵創建SortedList,但我發現很難自己設置它們考慮代碼的性質。C# - 在SortedList中自動生成密鑰

有什麼辦法讓列表自己生成密鑰?就像一個自動編號的東西?這可能很明顯,但我一直在谷歌搜索,找不到任何東西!

在此先感謝。

回答

5

爲什麼不使用標準List<T>?它們按索引排序,索引始終遞增。

+0

我需要訪問所有的密鑰,並在他們周圍列舉 - 你可以做一個列表? – 2012-04-23 13:35:41

+0

我不確定你的意思? – 2012-04-23 13:36:03

+0

我的SortedList的定義是SortedList >()。我需要找到最小密鑰以及在Keys中使用Linq進行搜索,所以我不確定我是否可以使用標準列表 ... – 2012-04-23 13:38:40

1

你可以用你定義的類包裝SortedList,這可以做額外的預訂。

0

的自動編號(或身份證),實際上只是一個線程安全的計數器,所以你可以只創建檢索下一個值的屬性或類級別變量,然後遞增值:

class TestAutoIncrement 
    { 
     int counter = 0; 
     private Object thisLock = new Object(); 

     public int GetNextCounterValue() 
     { 
      lock (thisLock) 
      { 
       counter++; 
       return counter; 
      } 
     } 
    } 
+0

'Interlock.Increment'可能更容易。 – 2012-04-23 13:36:54

+0

將'GetNextCounterValue'和'counter'更改爲靜態屬性效率更高 – SimSimY 2012-04-23 13:38:41

+0

@TheSimon假定計數器在數據結構的多個實例中必須是唯一的,這可能不是這種情況。 – Servy 2012-04-23 14:02:01