The fact that it implements the interface doesn't mean it is read-only. But because it implements the interface you can now pass it to methods that expect an IReadOnlyList. So the way to look at it, is that it implements the read-only list interface...along with some write methods.