Хранение экземпляров класса в Hashtable - PullRequest
1 голос
/ 04 февраля 2010

У меня есть класс Foo. Foo имеет свойство публичной строки x.

Я бы хотел несколько раз создать экземпляр Foo как ONE и TWO и добавить эти экземпляры в Hashtable Bar с ключами 1 и 2 соответственно. Как получить строку x для конкретного экземпляра.

Я пробовал что-то похожее на: Bar [1] .x, но свойство x не распознается.

Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 04 февраля 2010

Вы должны использовать Dictionary<int, Foo> вместо Hashtable.Hashtable - это устаревший класс для тех дней, когда у нас не было дженериков.Он хранит ключ и значения в виде object.Dictionary<TKey,TValue>, с другой стороны, является типизированной коллекцией со строгой типизацией.

Если вы хотите по какой-то причине использовать Hashtable (например, C # 1.0), вам придется привести объект:*

 ((Foo)Bar[1]).x
0 голосов
/ 04 февраля 2010

вам может понадобиться разыграть, как только вы извлечете из Hashtable.Попробуйте: строка s = (myHashtable [myKey] как Foo) .x;

Arg!Только что увидел ответ Мехрдада Афшари, который правильно указывает на это

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