暗黙的にintをIComparableにキャストできます。リストまたは配列をIEnumerableにキャストすることもできます。
しかし、なぜリストをIEnumerableに暗黙的にキャストできないのでしょうか。
これを.netFramework4.5とVisualStudio2012Ultimateでテストしました。
テストするコード:
IComparable test1;
int t1 = 5;
test1 = t1; //OK
IEnumerable<int> test2;
List<int> t2 = new List<int>();
int[] t3 = new int[] { 5, 6 };
test2 = t2; //OK
test2 = t3; //OK
TabAlignment[] test;
IEnumerable<IComparable> test3;
test3 = t2; //error Cannot implicitly convert type 'System.Collections.Generic.List<int>' to 'System.Collections.Generic.IEnumerable<System.IComparable>'. An explicit conversion exists (are you missing a cast?)