2011-09-28 60 views
2

嘿所有有没有像arrayList的集合类型,我可以添加一个对象使用ID?C#.NET和直接对象集合

有效地作为我的帖子的标题sugests直接对象集合。因此,例如:

DirectCollection.addAt(23, someobject); 

DirectCollection.getAt(23); 

等等等等

我知道数组列表是在这种情况下可使用的,但我有,以产生具有一个空引用对象,并且如果当初始条目对象有一个像23这样的ID,我必须生成22个其他条目来添加它,这显然是不切实际的。

基本上使用对象位置值作为唯一的ID。

有什么想法?

非常感谢。

+0

@Marco我总是逗得这些 “接我,接我!”注释! – Kevek

+0

@Marco我认为在居高临下和欢迎之间有一个平衡点,虽然你的意图可能会有所帮助,但它似乎在居高临下的方面有所降低。 (当然,你的回复是非常居高临下的)Gelion已经成为会员11天了,他的档案显示没有迹象表明他忽略了选择接受答案。也许如果他有几个优秀的回答问题,你的观点会多一点。 – Kevek

回答

4

你可以使用Dictionary<int, YourType> 像这样:

var p = new Dictionary<int, YourType>(); 
p.Add(23, your_object); 
YourType object_you_just_added = p[23]; 
2

你可以使用一个Dictionary

为您的示例代码将是非常简单的:

Dictionary<int, AType> directCollection = new Dictionary<int, AType>(); 
directCollection.Add(23, someObjectOfAType); 
AType anObject = directCollection[23]; 
1

我认为KeyedCollection或字典是你需要的。

2

使用字典。

Dictionary<int, YourType> 

它允许你添加/获取/删除与给定的密钥和非连续范围的项目。

0

使用System.Collections.Hashtable。它允许存储异构类型的对象(一个Hashtable可以容纳多种类型的对象)。

例子:

System.Collections.Hashtable keyObjectMap = new System.Collections.Hashtable(); 
//Add into Hashtable 
keyObjectMap["Key_1"] = "First String"; 
keyObjectMap["Key_2"] = "Second String"; 
//Add the value type 
keyObjectMap["Key_3"] = 1; 
keyObjectMap["Key_4"] = new object(); 

//Get value/object from Hashtable 
string value = (string)keyObjectMap["Key_2"]; 
int intValue = (int)keyObjectMap["Key_3"];