オブジェクト参照 (O 型) が特定のクラスのインスタンスかどうかをテストします。
Public Shared ReadOnly Isinst As OpCode
[C#]
public static readonly OpCode Isinst;
[C++]
public: static OpCode Isinst;
[JScript]
public static var Isinst : OpCode;
解説
命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。
形式 | アセンブリ形式 | 説明 |
---|---|---|
75 < T > | isinst class | オブジェクト参照が class のインスタンスかどうかをテストし、null 参照あるいはそのクラスまたはインターフェイスのインスタンスを返します。 |
スタックの遷移動作を順番に示すと、次のようになります。
- オブジェクト参照がスタックにプッシュされます。
- オブジェクト参照がスタックからポップされ、そのオブジェクト参照が class で渡されたクラスのインスタンスかどうかを確認するためにテストされます。
- 結果 (オブジェクト参照または null 参照) がスタックにプッシュされます。
Class は、目的のクラスを示すメタデータ トークンです。スタックの一番上にあるオブジェクトのクラスが class を実装している場合 (class がインターフェイスである場合)、または class 派生クラスである場合 (class が通常のクラスである場合) は、 Castclass が呼び出された場合と同様に、このクラスは class 型にキャストされ、その結果がスタックにプッシュされます。それ以外の場合は、null 参照がスタックにプッシュされます。オブジェクト参照自体が null 参照である場合は、 isinst が同様に null 参照を返します。
クラスが見つからない場合は、 TypeLoadException がスローされます。これは、通常、実行時ではなく、MSIL (Microsoft Intermediate Language) 命令がネイティブ コードに変換されるときに検出されます。
isinst オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。
- ILGenerator.Emit(OpCode, Type)
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ