Hay algo importante que la gente siempre parece pasar por alto:
Puede pasar una matriz simple a algo que acepte un IList<T>parámetro, y luego puede llamar IList.Add()y recibirá una excepción de tiempo de ejecución:
Unhandled Exception: System.NotSupportedException: Collection was of a fixed size.
Por ejemplo, considere el siguiente código:
private void test(IList<int> list)
{
list.Add(1);
}
Si llama a eso de la siguiente manera, obtendrá una excepción de tiempo de ejecución:
int[] array = new int[0];
test(array);
Esto sucede porque el uso de matrices simples con IList<T> viola el principio de sustitución de Liskov.
Por esta razón, si llama IList<T>.Add(), puede considerar solicitar un en List<T>lugar de un IList<T>.