2

と の 2 つの ref 型があると仮定しましょう:ABA は (B への) 暗黙のキャスト演算子を実装します。

class A
{
    private B b;
    public static implicit operator B(A a) { return a.b; }
}
class B
{
}

の配列を の配列に変換する最良の (簡潔かつ/または高速な) 方法AB何ですか?

4

1 に答える 1

3

機能し、合理的に簡単なことの 1 つは、Linq を使用することです。

A[] a = new A[5];//initialize elements
B[] b = a.Select(anA => (B)anA).ToArray();

ただし、Linq の Cast<> メソッドの使用は機能しません: (理由を参照してください)

B[] b2 = a.Cast<B>.ToArray();//throws InvalidCastException


更新:これはLinqを使用していないものです:

B[] b = Array.ConvertAll(a, elem => (B) elem);

これは、より詳細なアプローチを使用して、ラムダ以前の .NET 2.0 で機能する可能性があります。

B[] b = Array.ConvertAll(a, 
            new Converter<A, B>(delegate(A elem) { return (B) elem; }));

...そしておそらく短いバージョンを使用します:

B[] b = Array.ConvertAll(a, delegate(A elem) { return (B) elem; });
于 2013-01-25T13:57:43.270 に答える