Há uma coisa importante que as pessoas sempre parecem ignorar:
Você pode passar uma matriz simples para algo que aceita um IList<T>parâmetro e, em seguida, você pode chamar IList.Add()e receberá uma exceção de tempo de execução:
Unhandled Exception: System.NotSupportedException: Collection was of a fixed size.
Por exemplo, considere o seguinte código:
private void test(IList<int> list)
{
list.Add(1);
}
Se você chamar isso da seguinte maneira, receberá uma exceção de tempo de execução:
int[] array = new int[0];
test(array);
Isso acontece porque o uso de matrizes simples com IList<T>viola o princípio de substituição de Liskov.
Por esse motivo, se você estiver ligando, IList<T>.Add()considere solicitar um em List<T>vez de um IList<T>.