如何在c#中创建具有多个键和值的哈希表

本文关键字:键和值 哈希表 创建 | 更新日期: 2023-09-27 18:04:02

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

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

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

String name =objectArray[i].name

所以我自然地想到了C Sharp哈希表,但它只允许一个键->值插入。我不敢相信。net框架没有解决这样的问题…任何帮助将非常感激!

如何在c#中创建具有多个键和值的哈希表

在我看来,你是在把一个自定义类型推入一个数组。

使用IList将给你一个快速的Add方法,你可以在其中传递一个你自己类型的新对象,例如:

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});

如果你只是像你的例子那样通过索引访问元素,那么你不需要散列访问,你可以只使用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;

别忘了

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

你的意图是什么?