Why does List<T>
implement IReadOnlyList<T>
in .NET 4.5?
List<T>
isn't read only...
The IReadOnlyCollection interface extends the IEnumerable interface and represents a basic read-only collection interface. It also includes a Count property apart from the IEnumerable members as shown in the code snippet given below.
Because List<T>
implements all of the necessary methods/properties/etc. (and then some) of IReadOnlyList<T>
. An interface is a contract that says "I can do at least these things."
The documentation for
IReadOnlyList<T>
says it represents a read-only collection of elements.
That's right. There are no mutator methods in that interface. That's what read-only means, right? IReadOnlyList<T>
is used in the "typical" (contract) way, not as a marker.
Interfaces only describes functionality which will be implemented. It does not describe functionality which will not be implemented. IReadOnlyList is therefore an incorrect interface name, as it cannot dictate that write functionality will not be written.
The methods/functions of describe that you can read the contents of the list. The interface should have been IReadableList instead of IReadOnlyList.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With