次のコードを検討してください。
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'
。
私の解決策はわかっていますが、コンパイラがこの動作をする理由を知りたいですか?