Есть важная вещь, которую люди, кажется, всегда упускают из виду:
Вы можете передать простой массив чему-то, что принимает параметр IList<T>
, а затем вы можете вызвать IList.Add()
и получить исключение времени выполнения:
Unhandled Exception: System.NotSupportedException: Collection was of a fixed size.
Например, рассмотрим следующий код:
private void test(IList<int> list)
{
list.Add(1);
}
Если вы вызовете это следующим образом, вы получите исключение времени выполнения:
int[] array = new int[0];
test(array);
Это происходит потому, что использование простых массивов с IList<T>
нарушает принцип подстановки Лискова.
По этой причине, если вы звоните IList<T>.Add()
, вы можете рассмотреть вопрос о необходимости List<T>
вместо IList<T>
.