Рассмотрим этот код:
static void Main(string[] args)
{
var ints=new List<int> {10,11,22};
Something(ints);//Output:Count is:3
Something(new int[10]); //'System.Array' does not contain
// a definition for 'Count'
Console.ReadLine();
}
static void Something(ICollection collection)
{
dynamic dynamic = collection;
Console.WriteLine("Count is:{0}", dynamic.Count);
}
Когда проходит список, все в порядке. Но когда передайте массив и преобразуйте его в динамический, я получаю эту ошибку: 'System.Array' does not contain a definition for 'Count'
.
Я знаю, что такое мое решение, но я хочу знать, почему у компилятора это поведение?