【发布时间】:2025-12-18 21:50:02
【问题描述】:
例子:
public class ListInheritanceTest
{
public void Test1()
{
List<string> list = new List<string>();
MyList myList = list;
}
}
public class MyList : List<string>
{
}
但MyList myList = list 出现错误“无法将类型 'System.Collections.Generic.List' 隐式转换为 'ConsoleTest.MyList'”
我该如何解决这个问题?谢谢。
----编辑----
我不是在问为什么它会给出错误。我想知道使分配工作的解决方法是什么。
上面的代码只是一个简化的例子。目的是在我的代码中将所有 List<SomeType> 转换为 MyList 而不引入任何向后不兼容。
--- 第二次编辑----
让我重新表述这个问题。假设我在上面的代码中以相同的方式定义了 MyList。 将List<string> 分配给 MyList 的最简单方法是什么。
我知道
foreach(var item in list)
mylist.Add(item)
始终有效。只是在寻找更优雅的东西。
【问题讨论】:
-
MyList扩展List<T>,所以 MyList 是List<T>。另一方面,List<T>不是MyList并且不能分配给一个。 -
您需要将列表中的项目添加到我的列表中
-
MyList myList = new MyList();如果这不是答案,你想做什么? -
要扩展@JoachimIsaksson 的评论,请查看任何基本的继承教程。您可能会看到某种继承结构,例如
Dog : Animal和Cat : Animal。如果您有Animal animal = new Cat();,您如何分配Dog dog = animal;? -
您正试图将猫变成狮子并让它发出咆哮声!不行,那只猫只会喵喵叫。
标签: c# class generics inheritance