我将这个运算符添加到我的类中,并且当我传递一个“A”类时它运行良好,它转换为类“B”。
public static explicit operator B (A a)
{
//Convert A to B
}
但是当我想将“A”列表转换为“B”列表时,它不起作用。 我尝试下面的代码,但它也不起作用。
public static explicit operator List<B>(List<A> a)
{
//Convert List<A> to List<B>
}
抛出编译器错误“用户定义的转换必须转换为封闭类型或从封闭类型转换” 我不想使用扩展方法来施展它
答案 0 :(得分:3)
您无法使用Conversion Operators将一种类型的列表转换为另一种类型。
C#使程序员能够在类或结构上声明转换 类或结构可以转换为和/或从其他类转换 或结构,或基本类型。
如您所见,目的是将一种类型转换为另一种类型,而不是该类型的列表。
您可以使用Select
方法代替:
List<B> listB = listA.Select(a => (B)a).ToList();