如何将列表<type>转换为用户类



我试图了解如何将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?

您必须定义这样的转换;因为IntegnerList<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>?

在这种情况下,不能从基类强制转换为派生类。我认为下面的答案会对你有更多的帮助-

将基类转换为派生类

最新更新