C # Упорядоченный словарь указателя - PullRequest
3 голосов
/ 18 мая 2010

Я рассматриваю возможность использования OrderedDictionary. В качестве ключа я хочу использовать длинное значение (id), и это будет пользовательский объект.

Я использую OrderedDictionary, потому что я хочу получить объект по его идентификатору, и я хочу получить объект по его индексу 'collection'.

Я хочу использовать OrderedDictionary следующим образом:

public void AddObject(MyObject obj)
{
  _dict.Add(obj.Id, obj); // dict is declared as OrderedDictionary _dict = new OrderedDictionary();
}

Где-то еще в моем коде у меня есть что-то похожее на это:

public MyObject GetNextObject()
{
  /* In my code keep track of the current index */

  _currentIndex++;
  // check _currentindex doesn't exceed the _questions bounds
  return _dict[_currentIndex] as MyObject;
}

Теперь мой вопрос. В последнем методе я использовал индекс. Представьте, что _currentIndex установлен в 10, но у меня также есть объект с идентификатором 10. Я установил Id в качестве ключа.

Идентификатор MyObject имеет тип long ?. Это идет не так?

1 Ответ

2 голосов
/ 18 мая 2010

Обновлено, поскольку я никогда не замечал часть OrderedDictionary! Индексатор имеет переопределение либо object, которое будет извлекать значение по ключу, либо int, которое будет извлекать значение по индексу. Вам нужно будет привести ваш индекс как объект, если вы хотите получить его по ключу, например,

_dict[(object)_currentIndex] as MyObject;
...