我试图了解如何将List转换为我的类,例如:
class Program
{
public class Integner : List<int>
{
}
static void Main(string[] args)
{
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
Program.ShowList((Integner)list);
}
static void ShowList(Integner list)
{
list.ForEach(x => Console.WriteLine(x));
}
}
如何将List转换为扩展List的类Integner?
如何将List转换为扩展List的类Integner?
您必须定义这样的转换;因为Integner
是List<int>
的子类,所以不能只执行强制转换。
要定义转换,可以使用一个隐式运算符:
public class Integner : List<int>
{
public Integner(IEnumerable<int> collection) : base(collection) { }
public static implicit operator Integner(List<int> list) => new Integner(list);
}
这将使此语法有效:
Program.ShowList((Integner)list);
注意CCD_ 3的";复制构造函数";,这允许从任何CCD_ 4创建新的列表。
定义了这个构造函数后,显式地创建一个新的Integner
可能会更清楚,而不是使用运算符来混淆正在创建的新实例的事实:
Program.ShowList(new Integner(list));
顺便说一句,从List<T>
继承很少是个好主意:为什么不从List<T>?
在这种情况下,不能从基类强制转换为派生类。我认为下面的答案会对你有更多的帮助-
将基类转换为派生类