Có một điều quan trọng mà mọi người dường như luôn bỏ qua:
Bạn có thể truyền một mảng đơn giản cho một cái gì đó chấp nhận một IList<T>tham số, sau đó bạn có thể gọi IList.Add()và sẽ nhận được một ngoại lệ thời gian chạy:
Unhandled Exception: System.NotSupportedException: Collection was of a fixed size.
Ví dụ, hãy xem xét mã sau đây:
private void test(IList<int> list)
{
    list.Add(1);
}
Nếu bạn gọi như sau, bạn sẽ nhận được một ngoại lệ thời gian chạy:
int[] array = new int[0];
test(array);
Điều này xảy ra bởi vì sử dụng mảng đơn giản với IList<T>vi phạm nguyên tắc thay thế Liskov.
Vì lý do này, nếu bạn đang gọi, IList<T>.Add()bạn có thể muốn xem xét yêu cầu List<T>thay vì một IList<T>.