class A {
}
class B:A {
}
List X = new();
List Y = X;//报错
上面的代码会编译时报错,说无法隐式转化。添加显示转化也报错。
我该怎么办?
class A {
}
class B:A {
}
List X = new();
List Y = X;//报错
上面的代码会编译时报错,说无法隐式转化。添加显示转化也报错。
我该怎么办?
可以使用类型转换来实现这个转换。
List<B> X = new List<B>();
List<A> Y = X.Cast<A>().ToList();
或者使用 LINQ 的 OfType 方法来实现转换:
List<B> X = new List<B>();
List<A> Y = X.OfType<A>().ToList();
需要注意的是,这两种方法都是创建了一个新的 List<A> 对象,而不是将原有的 List<B> 转换为 List<A>。所以如果你想要在原有的 List<B> 基础上进行转换,你需要使用下面的方法:
List<B> X = new List<B>();
List<A> Y = new List<A>(X);