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.