2013-09-11 4 views
-1

Если вы переходите на this link in stackoverflow. Возникает вопрос о преобразовании Ienrumerable в словарь. Поэтому мой вопрос: зачем нам IEnumerable, когда у нас есть словарь?разница между IEnumerable и словарем C#

На самом деле, я пытаюсь выяснить, в чем разница между ними.

+7

Они * полностью * разные. Один - это * интерфейс *, представляющий произвольную последовательность элементов; другой - это конкретный * класс *, представляющий пары ключ/значение, используя хеширование, чтобы быстро выполнить поиск. Вы прочитали документацию по обоим типам, прежде чем спрашивать? –

+2

Зачем нам нужны апельсины, когда есть зебра. – zerkms

ответ

1

IEnumerable - это «интерфейс».

Словарь - это структура данных «хэш-карта».

+0

Да, это то, что я имею в виду, что вы используете интерфейс для создания классов, а IEnumerable - это интерфейс, а не класс. И этот интерфейс реализован в словаре. Поэтому, поскольку словарь использует IEnumerable, почему бы кто-то просто не вернуть объект Dictionary. Во всяком случае, я должен упустить что-то, что попал в мои исследования, поэтому я могу начать понимать. – user2688063

+0

IEnumerable inheritage в значительной степени только обещает, что объект можно итерировать. Словарь всегда IEnumberable, объект IEnumerable не всегда является Словарем. – Jite

+0

Thnaks Jite для объяснения, но то, что я говорю. IEnumerable - это интерфейс. И если я прочитаю определение интерфейса, он говорит, что интерфейсы реализованы в других классах, и их члены должны быть определены в вызываемом классе. Если я следую определению, то я настолько запутался, что я могу напрямую назначать значения интерфейсу. Во всяком случае, это мой последний пост в этой теме. – user2688063

1

Так что мой вопрос в том, зачем нам нужно IEnumerable, когда у нас есть словарь?

вопрос вы упоминается о противоположном: создание DictionaryизIEnumerable. Итак, у вас есть IEnumerable, и вы хотели бы иметь Dictionary.

Это может потребоваться, если у вас есть, например. e List, и вы хотели бы иметь быстрый доступ к элементам коллекции по одному из значений свойства элементов.

И только, чтобы быть уверенным, что Dictionary<TKey, TValue> уже реализует IEnumerable<T>, поэтому преобразование не было бы необходимым в противоположном направлении (если вы не пытаетесь изменить T).

+0

Извините, ребята, я пытаюсь учиться. Я читал об объектах Generics, и он говорит, что словарь и все объекты Generics используют IEnumerable интерфейс. Я не совсем понимаю ответы из-за недостатка моих знаний, но я вернусь после некоторых дополнительных чтений. – user2688063

2

ну, вопрос, который вы связали, находится на противоположном вопросе. как конвертировать из IEnumerable в Dictionary. почему мы обратимся наоборот? мы, вероятно, не будем. но вы также можете спросить, почему кто-то будет преобразовывать определенный класс в объект?

Ответ: иногда вы хотите иметь параметр/параметр/член класса, который может быть одним из многих: словарем или чем-то еще. для этого вы можете использовать IEnumerable.

+0

"преобразование определенного класса в объект" o_O – zerkms

Смежные вопросы