Following information is excerpted from MSDN documentation:
Assembly: System (in System.dll)
Represents a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed.
The ObservableCollection<T> class, is an implementation of a data collection that implements the INotifyCollectionChanged interface. (The INotifyCollectionChanged interface exposes the CollectionChanged event, an event that should be raised whenever the underlying collection changes.)
If you ever need to implement your own collection, consider using IList, which provides a non-generic collection of objects that can be individually accessed by index. Implementing IList provides the best performance with the data binding engine.