次の方法で共有


OpCodes.Castclass フィールド

指定したクラスへの参照により渡されたオブジェクトをキャストしようとします。

Public Shared ReadOnly Castclass As OpCode
[C#]
public static readonly OpCode Castclass;
[C++]
public: static OpCode Castclass;
[JScript]
public static var Castclass : OpCode;

解説

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

形式 アセンブリ形式 説明
74 < T > castclass class class 型の新しいオブジェクトにオブジェクトをキャストします。

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

  1. オブジェクト参照がスタックにプッシュされます。
  2. スタックからオブジェクト参照がポップされます。参照されるオブジェクトは、指定した class としてキャストされます。
  3. 成功すると、新しいオブジェクト参照がスタックにプッシュされます。

castclass 命令は、指定したクラスにスタックの一番上のオブジェクト参照 (O 型) をキャストしようとします。新しいクラスは、目的のクラスを示すメタデータ トークンによって指定されます。スタックの一番上にあるオブジェクトのクラスが、新しいクラスを実装しておらず (新しいクラスがインターフェイスであることを前提とする)、新しいクラスの派生クラスでもない場合は、 InvalidCastException がスローされます。オブジェクト参照が null 参照である場合は、 castclass が成功し、新しいオブジェクトを null 参照として返します。

obj をクラスにキャストできない場合は、 InvalidCastException がスローされます。

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

castclass オペコードを使用できる 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 ファミリ

参照

OpCodes クラス | OpCodes メンバ | System.Reflection.Emit 名前空間