Коллекции - предметы для запоминания - PullRequest
1 голос
/ 29 октября 2009

Я новичок в C #. Работа в ASP.NET 3.5 (C # 3.0). Какие классы коллекции мне нужны, чтобы ознакомиться с inorder для разработки эффективного кода? как IList, так и достаточно IList<T>, List, List<T>?

Большое спасибо всем, что дали мне очень хорошее руководство.

Ответы [ 6 ]

7 голосов
/ 29 октября 2009

Помимо List<T> и Dictionary<TKey, TValue> Я также призываю вас ознакомиться с интерфейсом IEnumerable<T> (и с методами расширения вокруг это) и, прежде всего, привычка выставлять IEnumerable<T> как выбор из первых рук, пока не будет доказано, что вам нужно возвращать "более богатый" интерфейс из методов.

1 голос
/ 29 октября 2009

Большую часть времени я придерживаюсь List<> и Dictionary<>, но с введением LINQ to Objects я нахожу, что довольно редко мне нужно создавать экземпляры этих классов больше. Я также передаю свои списки как IEnumerable<> и многое другое.

Подробное описание доступных коллекций приведено в Типы коллекций, которые обычно используются .

0 голосов
/ 29 октября 2009

Новый класс набора HashSet<T>, который реализует ICollection<T> и возвращает false для Add(...), если вы добавляете уже существующее значение, также подходит для набора инструментов

0 голосов
/ 29 октября 2009

Dictionary<K,V> и OrderedDictionary<K,V> полезно знать для хранения строго типизированных пар ключ-значение.

0 голосов
/ 29 октября 2009

Какие из них вам необходимо знать, зависит от того, что вам нужно делать.

Если вы хотите узнать о классах коллекций, посетите страницу Системные коллекции в MSDN .

На мой взгляд, полезно знать обо всем, что реализует ICollection, IDictionary, IEnumerable и IList.

0 голосов
/ 29 октября 2009

Каждая коллекция имеет свои сильные стороны и цели. Я нахожу, что я использую List<T> и Dictionary<TKey, TValue> чаще всего. Вы можете быть достаточно эффективными, просто зная эти два.

Однако, чтобы быть наиболее эффективным, вы должны быть знакомы хотя бы с целью всех из них, чтобы выбрать правильную. Например, представляет ли ваша коллекция очередь дел? Или это стек? Если значение элемента также действует как его идентичность, у вас их много, и вам нужно быстро их получить, тогда вам может понадобиться Hashset.

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