System.Collections против System.Collections.ObjectModel - PullRequest
7 голосов
/ 25 июня 2010

Кажется, что в System.Collections.ObjectModel также есть определенные классы коллекций. В чем разница между коллекциями в этих двух пространствах имен и в каком сценарии мы должны использовать System.Collections.ObjectModel?

Ответы [ 3 ]

8 голосов
/ 25 июня 2010

С MSDN :

Пространство имен System.Collections.ObjectModel содержит классы, которые можно использовать в качестве коллекций в объектной модели библиотеки многократного использования.Используйте эти классы, когда свойства или методы возвращают коллекции.

См. Также Причина, по которой Collection, ReadOnlyCollection и KeyedCollection были перемещены в пространство имен System.Collections.ObjectModel

0 голосов
/ 25 июня 2010

Классы System.Collections.ObjectModel полезны для представления ваших коллекций внешнему миру.(Под внешним миром я имею в виду код, не совместимый с вашим кодом.)

Поэтому используйте универсальные классы коллекций в своем коде, но оберните их в коллекцию, ReadOnlyCollection или ObservableCollection, когда вы хотите предоставить еговнешний мир.

Чтобы обернуть коллекцию в коллекцию с ключами, KeyedCollection можно использовать как базовый класс для помощника.

0 голосов
/ 25 июня 2010

Одно очевидное отличие состоит в том, что пространство имен System.Collections.ObjectModel содержит общие только для чтения (т.е. без методов Add, Remove, Clear и т. д.).

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