Как создать HashTable в C # с несколькими ключами и значениями - PullRequest
0 голосов
/ 01 августа 2011

Мне нужно реализовать в C # следующую структуру из ActionScript3:

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

Чтобы позже я мог получить доступ к объектам из массива следующим образом:

String name =objectArray[i].name

Так что я, конечно, думаю о C Sharp Hash Tables, но разрешаю только одну вставку Key -> Value. Я не могу поверить, что .NET Framework не имеет решения для такой вещи ... Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

2 голосов
/ 01 августа 2011

Мне кажется, что вы помещаете пользовательский тип в массив.

Использование IList даст вам быстрый метод Add, с помощью которого вы можете передать новый объект вашего типа, такой как:

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

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

UPDATE

Просто добавьте немного дополнительной ценности на основе комментария Хенка к ответу Поргеса, вот способ сделать то же самое, используя динамический тип и, таким образом, устраняя необходимость в пользовательском типе:

IList<dynamic> myCollection  = new List<dynamic>();
    myCollection.Add(new {  
      Name = "foo",
      Category = "bar",
      IsSet = true,
      IsEmpty = true});
2 голосов
/ 01 августа 2011

Если вы просто обращаетесь к элементам по индексу, как в вашем примере, то вам не нужен хешированный доступ, вы можете просто использовать 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 голосов
/ 01 августа 2011

Не забывайте о

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

Каково ваше намерение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...