明らかにリフレクションは非常に広範なテーマですが、簡単な例を見てみましょう: "is" 演算子 (A は B) です。CLR に実際に必要なことは何ですか? アセンブリのメタデータを調べるには、型 A を見つけ、その継承階層を上に移動して、B がどこかにあるかどうかを確認します。
さて、これはすべて CLR の標準的な作業ではないでしょうか。つまり、CLR は非リフレクション コードで常に実行時に型チェックを行います。メソッドを呼び出したり、パラメーターに値を割り当てたりするときはいつでも、CLR は、割り当てられたオブジェクトの型が指定されたパラメーターまたは変数と一致するかどうかを実行時にチェックする必要があります。
では、リフレクション (つまり、"is" や "as" などの単純な演算子を意味します) が比較的高価になるのはなぜでしょうか?