如何使用显式运算符将List转换为另一个List而不使用extention方法

时间:2016-11-01 09:56:05

标签: c# explicit-conversion

我将这个运算符添加到我的类中,并且当我传递一个“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>
   }

抛出编译器错误“用户定义的转换必须转换为封闭类型或从封闭类型转换” 我不想使用扩展方法来施展它

1 个答案:

答案 0 :(得分:3)

您无法使用Conversion Operators将一种类型的列表转换为另一种类型。

  

C#使程序员能够在类或结构上声明转换   类或结构可以转换为和/或从其他类转换   或结构,或基本类型。

如您所见,目的是将一种类型转换为另一种类型,而不是该类型的列表。

您可以使用Select方法代替:

List<B> listB = listA.Select(a => (B)a).ToList();