抽象类列表
我有抽象类:
public abstract class MyClass
{
public abstract string nazwa
{
get;
}
}
还有两个从 MyClass 继承的类:
public class MyClass1 : MyClass
{
public override string nazwa
{
get { return "aaa"; }
}
}
public class MyClass2 : MyClass
{
public override string nazwa
{
get { return "bbb"; }
}
}
在另一个类中我创建列表:
List<MyClass> myList;
现在我想创建
myList = new List<MyClass1>;
编译器显示错误:
Cannot implicitly convert type 'System.Collections.Generic.List<Program.MyClass1>' to 'System.Collections.Generic.List<Program.MyClass>'
我必须有一些简单的方法来转换它...我找不到任何有用的东西
I have abstract class:
public abstract class MyClass
{
public abstract string nazwa
{
get;
}
}
And two classes which inherit from MyClass:
public class MyClass1 : MyClass
{
public override string nazwa
{
get { return "aaa"; }
}
}
public class MyClass2 : MyClass
{
public override string nazwa
{
get { return "bbb"; }
}
}
In another class I create List:
List<MyClass> myList;
Now I want to create
myList = new List<MyClass1>;
The compiler show an error:
Cannot implicitly convert type 'System.Collections.Generic.List<Program.MyClass1>' to 'System.Collections.Generic.List<Program.MyClass>'
I must be some easy way to convert it... I cannot find anything useful
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以将列表创建为基本类型:
然后您可以将派生项目添加到其中:
You can create the list as the base type:
Which you can then add derived items to:
将
List
转换为List
并不安全。你期望会发生什么?
如果你写You're Asking for covariance; 协方差只能通过只读接口实现。
因此,
IEnumerable
可转换为IEnumerable
。It is not safe to convert a
List<Derived>
to aList<Base>
.What do you expect to happen if you write
You're asking for covariance; covariance is only possible with read-only interfaces.
Thus,
IEnumerable<Derived>
is convertible toIEnumerable<Base>
.你必须有一个基类列表,稍后当你需要的时候你可以使用Linq来获取MyClas1项列表。
You must have a base class list, and later you can use Linq to get the MyClas1 item list when you need it.