このコードを実行した後:
var input = new List<T>( ... );
var result = input.Select( t => new U(t) );
U first1 = null;
foreach ( U u1 in result )
if ( first1 == null )
first1 = u1;
U first2 = null;
foreach ( U u2 in result )
if ( first2 == null )
first2 = u2;
次に、両方のUが同じTをラップしていても、'first1 == first2'はfalseと評価されます。まだテストしていませんが、.ToList()または.ToArray()をチェーンすることでtrueと評価できると思います。 Select()呼び出しに。
この単純な図よりもはるかに複雑な実際のコードでは、.ToList()または.ToArray()のどちらを追加するかを決定するために使用する経験則は何ですか?私の最初の考えは、複数回繰り返される可能性のある参照式か、潜在的な反復が明らかでない場合に安全にするために、結果が決して変わらない参照式のいずれかです。