Export (0) Print
Expand All

7.4.2.3 Better conversion

Visual Studio .NET 2003

Given an implicit conversion C1 that converts from a type S to a type T1, and an implicit conversion C2 that converts from a type S to a type T2, the better conversion of the two conversions is determined as follows:

  • If T1 and T2 are the same type, neither conversion is better.
  • If S is T1, C1 is the better conversion.
  • If S is T2, C2 is the better conversion.
  • If an implicit conversion from T1 to T2 exists, and no implicit conversion from T2 to T1 exists, C1 is the better conversion.
  • If an implicit conversion from T2 to T1 exists, and no implicit conversion from T1 to T2 exists, C2 is the better conversion.
  • If T1 is sbyte and T2 is byte, ushort, uint, or ulong, C1 is the better conversion.
  • If T2 is sbyte and T1 is byte, ushort, uint, or ulong, C2 is the better conversion.
  • If T1 is short and T2 is ushort, uint, or ulong, C1 is the better conversion.
  • If T2 is short and T1 is ushort, uint, or ulong, C2 is the better conversion.
  • If T1 is int and T2 is uint, or ulong, C1 is the better conversion.
  • If T2 is int and T1 is uint, or ulong, C2 is the better conversion.
  • If T1 is long and T2 is ulong, C1 is the better conversion.
  • If T2 is long and T1 is ulong, C2 is the better conversion.
  • Otherwise, neither conversion is better.

If an implicit conversion C1 is defined by these rules to be a better conversion than an implicit conversion C2, then it is also the case that C2 is a worse conversion than C1.

Show:
© 2014 Microsoft