3

私は次のようなメソッドを持っています:

T[] field;

public Method(IList<T> argument)
{
    this.field = (T[])argument;
}

メソッドの本体が実行されると、キャスト中に列挙が行われますか?基になるタイプが異なる場合、それは変わりますか?

4

2 に答える 2

8

いいえ、何も列挙しません。argumentが実際にある場合は成功し、そうでない場合は例外をT[]スローします。InvalidCastException(または null の場合argumentは null を返します。)

于 2010-03-16T15:06:55.933 に答える
4

argumentが ( 型の) 配列への参照である場合T、列挙はありません — これは単純なキャストです。

argumentが IList を実装する 1 つまたは別のクラスへの参照である場合List<T>、キャスト例外が発生する可能性があります。(暗黙的または明示的な変換が存在する可能性があるため、潜在的に言いますT[]— ほとんどの場合、存在しません)。

編集:Jon が指摘したように、ジェネリック メソッドでは変換が行われないため、上記の括弧は正しくありません。

于 2010-03-16T15:09:17.983 に答える