2011-08-01 53 views
0

我需要C#實現從ActionScript3的結構如下:如何創建在C#中有多個鍵哈希表和值

objectArray.push({name:"Stx10",category:123 , isSet:false, isEmpty:true}); 

這樣,以後我可以從這樣的數組訪問對象:

String name =objectArray[i].name 

所以我自然雖然關於C夏普哈希表,但只允許一個鍵 - >值插入。我不能相信.NET框架沒有解決這樣的事情... 任何幫助將不勝感激!

+1

不確定HashTable是否是最好的容器使用,你看過字典? – Filip

+0

哈希表也支持你試圖做的事情(除了不投射對象 - >字符串)。你確定你沒有使用HashSet嗎? – Rob

+0

你在索引變量'i'中存儲了什麼樣的值? – stakx

回答

2

它看起來對我來說,你推一個自定義類型的數組。

使用一個IList會給你一個快速的添加方法中,你可以通過你一個新的對象類型,比如:

IList<MyType> myCollection = new List<MyType>(); 

myCollection.Add(new MyType{ 
Name = "foo", 
Category = "bar", 
IsSrt = true, 
IsEmpty = true 
}); 

UPDATE

我想補充一點額外的價值根據Henk對Porges的回答的評論,以下是使用動態類型做同樣事情的方法,因此不需要定製類型:

IList<dynamic> myCollection = new List<dynamic>(); 
    myCollection.Add(new { 
     Name = "foo", 
     Category = "bar", 
     IsSet = true, 
     IsEmpty = true}); 
+0

非常感謝傑米和@Porges的答案! –

+0

不客氣邁克爾。我剛剛還添加了使用動態列表的更新。 –

+0

哇,這真棒傑米。我真的更感興趣的動態解決方案,因爲在我的情況下,參數不同。謝謝很多! –

2

如果您只是按照您的示例訪問索引元素,那麼您不需要散列訪問,您可以使用List<T>

我封裝您的信息類型是這樣的:

class Thing { 
    public string Name {get; set;} 
    public int Category {get; set;} 
    public bool IsSet {get; set;} 
    public bool IsEmpty {get; set;} 
} 

然後:

objectList.Add(new Thing{Name="Stx10", Category=123, IsSet=false, IsEmpty=true}) 

// ... 

string name = objectList[i].Name; 
+0

和一個匿名/動態類型來容納'name','category'等。 –

0

別忘了

var d=new Dictionary<string, object>(); 

你有什麼打算嗎?

相關問題