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 に答える