情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

OpCodes.Isinst フィールド

2013/12/12

オブジェクト参照 (O 型) が特定のクラスのインスタンスであるかどうかをテストします。

Namespace:  System.Reflection.Emit
アセンブリ:  mscorlib (mscorlib.dll 内)

public static readonly OpCode Isinst

命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。

形式

アセンブリ形式

説明

75 < T >

isinst class

オブジェクト参照が class のインスタンスかどうかをテストし、null 参照あるいはそのクラスまたはインターフェイスのインスタンスを返します。

スタックの遷移動作を順番に示すと、次のようになります。

  1. オブジェクト参照がスタックにプッシュされます。

  2. オブジェクト参照がスタックからポップされ、そのオブジェクト参照が class で渡されたクラスのインスタンスかどうかがテストされます。

  3. 結果 (オブジェクト参照または null 参照) がスタックにプッシュされます。

Class は、目的とするクラスを示すメタデータ トークンです。スタックの一番上にあるオブジェクトのクラスが class を実装している場合 (class がインターフェイスの場合)、または class の派生クラスの場合 (class が通常のクラスの場合) は、Castclass が呼び出された場合とまったく同様に、このクラスは class 型にキャストされ、その結果がスタックにプッシュされます。それ以外の場合は、null 参照がスタックにプッシュされます。オブジェクト参照自体が null 参照である場合、isinst は同様に null 参照を返します。

クラスが見つからない場合は、TypeLoadException がスローされます。これは、通常、実行時ではなく、MSIL 命令がネイティブ コードに変換されるときに検出されます。

isinst オペコードを使用できる Emit メソッド オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode, Type)

Windows Phone OS

サポート: 8.0, 7.1

表示: