2

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

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

4

1 回答 1

4

您不能使用转换运算符将一种类型的列表转换为另一种类型。

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

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

您可以使用Select方法代替:

List<B> listB = listA.Select(a => (B)a).ToList();
于 2016-11-01T09:57:25.537 回答