OpCodes.Isinst OpCodes.Isinst OpCodes.Isinst OpCodes.Isinst Field


オブジェクト参照 (O 型) が特定のクラスのインスタンスかどうかをテストします。Tests whether an object reference (type O) is an instance of a particular class.

public: static initonly System::Reflection::Emit::OpCode Isinst;
public static readonly System.Reflection.Emit.OpCode Isinst;
 staticval mutable Isinst : System.Reflection.Emit.OpCode
Public Shared ReadOnly Isinst As OpCode 



次の表は、命令の 16 進数と簡単なリファレンス概要と共に、Microsoft Intermediate Language (MSIL) アセンブリの形式を示します。The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:

形式Format アセンブリの形式Assembly Format 説明Description
75 < T >75 < T > isinst classisinst class インスタンスで、オブジェクト参照がテストclass、null 参照またはそのクラスのインスタンスを返す、またはインターフェイスします。Tests if an object reference is an instance of class, returning either a null reference or an instance of that class or interface.

履歴の移行動作を順番には。The stack transitional behavior, in sequential order, is:

  1. オブジェクト参照は、スタックにプッシュされます。An object reference is pushed onto the stack.

  2. オブジェクト参照をスタックからポップされ、それが渡されたクラスのインスタンスであるかどうかをテストclassします。The object reference is popped from the stack and tested to see if it is an instance of the class passed in class.

  3. 結果 (オブジェクト参照または null 参照) は、スタックにプッシュされます。The result (either an object reference or a null reference) is pushed onto the stack.

Class 目的のクラスをメタデータ トークンを示すです。Class is a metadata token indicating the desired class. スタックの上部にあるオブジェクトのクラスを実装するかどうかはclass(場合classインターフェイス) またはの派生クラスであるclass(場合class通常のクラス) 型にキャストし、classし、結果が、スタックにプッシュされますまったく同じようCastclassが呼び出されました。If the class of the object on the top of the stack implements class (if class is an interface) or is a derived class of class (if class is a regular class) then it is cast to type class and the result is pushed on the stack, exactly as though Castclass had been called. それ以外の場合、null 参照がスタックにプッシュされます。Otherwise, a null reference is pushed on the stack. オブジェクト参照自体が null 参照では、しisinst同様に null 参照を返します。If the object reference itself is a null reference, then isinst likewise returns a null reference.

TypeLoadException クラスが見つからない場合にスローされます。TypeLoadException is thrown if class cannot be found. 通常、ランタイムではなくネイティブ コードに、Microsoft Intermediate Language (MSIL) 命令が変換される場合に検出します。This is typically detected when the Microsoft Intermediate Language (MSIL) instructions are converted to native code rather than at runtime.

Emitメソッドのオーバー ロードを使用できる、 isinst opcode:The following Emit method overload can use the isinst opcode:

  • ILGenerator.Emit(OpCode, Type)ILGenerator.Emit(OpCode, Type)