如何在不使用扩展方法的情况下使用显式运算符将列表转换为另一个列表

How can convert a List to another List with explicit operator with out using extention method

我将此运算符添加到我的 class 中,当我传递 "A" 的 class 时效果很好,它转换为 class "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>
   }

它抛出编译器错误"User-defined conversion must convert to or from the enclosing type" 我不想使用扩展方法来投射它

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

C# enables programmers to declare conversions on classes or structs so that classes or structs can be converted to and/or from other classes or structs, or basic types.

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

您可以使用 Select 方法代替:

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