私は次のようなメソッドを持っています:
T[] field;
public Method(IList<T> argument)
{
this.field = (T[])argument;
}
メソッドの本体が実行されると、キャスト中に列挙が行われますか?基になるタイプが異なる場合、それは変わりますか?
いいえ、何も列挙しません。argument
が実際にである場合は成功し、そうでない場合は例外をT[]
スローします。InvalidCastException
(または null の場合argument
は null を返します。)
argument
が ( 型の) 配列への参照である場合T
、列挙はありません — これは単純なキャストです。
argument
が IList を実装する 1 つまたは別のクラスへの参照である場合List<T>
、キャスト例外が発生する可能性があります。(暗黙的または明示的な変換が存在する可能性があるため、潜在的に言いますT[]
— ほとんどの場合、存在しません)。
編集:Jon が指摘したように、ジェネリック メソッドでは変換が行われないため、上記の括弧は正しくありません。