今日、同僚から興味深い質問がありました。C# のキーワード/演算子は "リフレクション" と見なされますか?
object tmp = "a string";
if(tmp is String)
{
}
このオペレーターは舞台裏でどのように実装されていますか? 反省や内省が必要ですか?それとも、言語の厳密に型指定された性質のために、オブジェクトの Type は、メモリ内のオブジェクトの最上位属性としてすぐにアクセスできますか?
MSDNは次のように述べています。
is 演算子は、参照変換、ボックス化変換、ボックス化解除変換のみを考慮することに注意してください。ユーザー定義の変換など、その他の変換は is 演算子では考慮されません。
ボックス化されたコンバージョンとボックス化されていないコンバージョンを考慮する能力は、ある種の内省を暗示しているように思えます。