如何使用显式操作符将List转换为另一个List而不使用扩展方法

本文关键字:List 方法 扩展 另一个 转换 何使用 操作符 | 更新日期: 2023-09-27 18:15:42

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

抛出编译器错误"用户定义的转换必须转换到封闭类型或从封闭类型转换"我不想使用扩展方法来强制转换

如何使用显式操作符将List转换为另一个List而不使用扩展方法

不能使用转换操作符将一种类型的列表转换为另一种类型。

c#允许程序员在类或结构上声明转换可以将类或结构转换为和/或转换为其他类

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

您可以使用Select方法代替:

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