Наличие этого кода...
var b = new ReadOnlyCollection<int>(new[] { 2, 4, 2, 2 });
b[2] = 3;
Я получаю ошибку компиляции во второй строке. Я ожидал бы ошибки во время выполнения, поскольку ReadOnlyCollection<T> реализует IList<T>, а this[T] - сеттер в интерфейсе IList<T>.
Я попытался реплицировать функциональность ReadOnlyCollection, но удаление setter из this[T] является ошибкой компиляции.