下面的代码给你一个编译器错误,如你所期望:为什么C#编译器允许在IEnumerable <T>和TAlmostAnything之间进行显式强制转换?
List<Banana> aBunchOfBananas = new List<Banana>();
Banana justOneBanana = (Banana)aBunchOfBananas;
然而,在使用时IEnumerable<Banana>
,你只是得到一个运行时错误。
IEnumerable<Banana> aBunchOfBananas = new List<Banana>();
Banana justOneBanana = (Banana)aBunchOfBananas;
为什么C#编译器允许这样做?
的事情列表不是一个单一的东西。 – 2012-02-08 17:07:38
虽然不允许使用值类型。 – ken2k 2012-02-08 17:08:07
这也适用于IList。这就是在下面的答案中,让整个界面与具体类在我的点击。 –
deepee1
2012-02-08 22:34:29