2012-04-23 111 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