Difference between Implicit conversion and Explicit conversion

Type conversion takes two forms:

  • Implicit conversion
  • Explicit conversion

Implicit conversion:

Implicit casting doesn't require a casting operator. This casting is normally used when converting data from smaller integral types to larger or derived types to the base type.

int x = 123;
double y = x;

In the above statement, the conversion of data from int to double is done implicitly, in other words programmer don't need to specify any type operators.

For example, the values of ushort and char are effectively interchangeable, because both store a number between 0 and 65535. You can convert values between these types implicitly.

There are many implicit conversions of simple types; bool and string have no implicit conversions, but the numeric types have a few. For reference, the following table shows the numeric conversions that the compiler can perform implicitly (remember that chars are stored as numbers, so char counts as a numeric type).

TYPE CAN SAFELY BE CONVERTED TO
byte short, ushort, int, uint, long, ulong, float, double, decimal
sbyte short, int, long, float, double, decimal
short int, long, float, double, decimal
ushort int, uint, long, ulong, float, double, decimal
int long, float, double, decimal
uint long, ulong, float, double, decimal
long float, double, decimal
ulong float, double, decimal
float double
char ushort, int, uint, long, ulong, float, double, decimal

Explicit conversion:

Explicit casting requires a casting operator. This casting is normally used when converting a double to int or a base type to a derived type.

double y = 123;
int x = (int)y;

In the above statement, we have to specify the type operator (int) when converting from double to int else the compiler will throw an error.