The following table lists the instruction's hexadecimal and Microsoft Intermediate Language (MSIL) assembly format, along with a brief reference summary:
74 < T > |
castclass class |
Casts an object to a new object of type class. |
The stack transitional behavior, in sequential order, is:
[The 'ordered' type of list has not been implemented in the ECMA stylesheet.]The castclass instruction attempts to cast the object reference (type O) atop the stack to a specified class. The new class is specified by a metadata token indicating the desired class. If the class of the object on the top of the stack does not implement the new class (assuming the new class is an interface) and is not a derived class of the new class then an InvalidCastException is thrown. If the object reference is a null reference, castclass succeeds and returns the new object as a null reference.
InvalidCastException is thrown if obj cannot be cast to class.
TypeLoadException is thrown if class cannot be found. This is typically detected when a Microsoft Intermediate Language (MSIL)instruction is converted to native code rather than at runtime.
The following ILGenerator.Emit(OpCode) method overload can use the castclass opcode:
ILGenerator.Emit(OpCode, Type)