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>
.