This documentation is archived and is not being maintained.

6.2.3 Explicit reference conversions

Visual Studio .NET 2003

The explicit reference conversions are:

  • From object to any other reference-type.
  • From any class-type S to any class-type T, provided S is a base class of T.
  • From any class-type S to any interface-type T, provided S is not sealed and provided S does not implement T.
  • From any interface-type S to any class-type T, provided T is not sealed or provided T implements S.
  • From any interface-type S to any interface-type T, provided S is not derived from T.
  • From an array-type S with an element type SE to an array-type T with an element type TE, provided all of the following are true:
  • S and T differ only in element type. In other words, S and T have the same number of dimensions.
  • Both SE and TE are reference-types.
  • An explicit reference conversion exists from SE to TE.
  • From System.Array and the interfaces it implements to any array-type.
  • From System.Delegate and the interfaces it implements to any delegate-type.

The explicit reference conversions are those conversions between reference-types that require run-time checks to ensure they are correct.

For an explicit reference conversion to succeed at run-time, the value of the source operand must be null, or the actual type of the object referenced by the source operand must be a type that can be converted to the destination type by an implicit reference conversion (Section 6.1.4). If an explicit reference conversion fails, a System.InvalidCastException is thrown.

Reference conversions, implicit or explicit, never change the referential identity of the object being converted. In other words, while a reference conversion may change the type of the reference, it never changes the type or value of the object being referred to.

Show: