如何使用多个键和值在C#中创建HashTable

时间:2011-08-01 09:57:40

标签: c# arrays hashtable

我需要在C#中实现ActionScript3中的以下结构:

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

以后我可以像这样访问数组中的对象:

String name =objectArray[i].name

所以我自然而然地关于C Sharp Hash Tables但只允许一个Key - >价值插入。我无法相信.NET框架没有解决这样的问题...... 任何帮助将不胜感激!

3 个答案:

答案 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;

答案 1 :(得分:2)

在我看来,你正在将自定义类型推送到数组。

使用IList将为您提供一种快速添加方法,您可以在其中传递您键入的新对象,例如:

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

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

<强>更新

根据Henk对Porges答案的评论,添加一些额外的价值,这是一种使用动态类型做同样事情的方法,因此无需自定义类型:

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

答案 2 :(得分:0)

不要忘记

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

你的意图是什么?