3
为什么代码编译在第一种情况下,但在第二个没有编制?
class ClassA {
}
class ClassB : ClassA {
}
static void Main() {
var classAList = new List<ClassA>();
var classBList = new List<ClassB>();
IEnumerable<ClassA> classAIEnumerable;
IEnumerable<ClassB> classBIEnumerable = new List<ClassB>();
// First case:
classAIEnumerable = classBIEnumerable;
// Second case:
classAList = classBList;
}
在第二种情况下阻止代码编译的是什么?为什么编译器不知道这个投射是安全的?