To prevent any modifications to List(T), expose List(T) only through this wrapper. A ReadOnlyCollection(T) does not expose methods that modify the collection. However, if changes are made to the underlying List(T), the read-only collection reflects those changes.
The following example demonstrates the AsReadOnly method. A List(T) of strings with a capacity of 4 is created, because the ultimate size of the list is known to be exactly 4. The list is populated with four strings, and the AsReadOnly method is used to get a read-only IList(T) generic interface implementation that wraps the original list.
An element of the original list is set to "Coelophysis" using the Item property (the indexer in C#), and the contents of the read-only list are displayed again to demonstrate that it is just a wrapper for the original list.