Type Conversion is process of converting one data type into another data type. This help us choose most appropriate type for the variable. It is also known as type casting.

It can be done in two ways:

- Implicit Type Conversion
- Explicit Type Conversion.

## Implicit Type Conversion

Implicit Type Conversion is done automatically by C# compiler. It occurs when we assign lower range value to higher range variable. In this conversion, no data will be lost so it is a safe type conversion. For Example:

int a = 1; long b = a;

Some possible implicit type conversions are listed below:

sbyte | int, short, long, double, decimal, float |
---|---|

byte | int, short, ushort, uint, ulong, long, double, decimal, float |

short | int, long, double, decimal, float |

ushort | int, uint. long, ulong. double, decimal, float |

uint | long, float, ulong, double, decimal |

int | long, double, decimal, float |

long | double, decimal, float |

ulong | double, decimal, float |

float | double |

char | int, long, double, float, decimal, uint, ulong, ushort (only where there is numeric value stored in it) |

## Explicit Type Conversion

Explicit Type Conversion is done by users using cast operator. This conversion might cause data loss or conversion might not be possible in some cases due to type mismatch. So, it is also known as unsafe conversion. For example:

double a = 1.1d; long b = (long)a;

Here, after conversion 1.1 is changed to 1. So, there is data loss.

Explicit type conversion can be done among any for following data types but some data can be lost:

## Methods of Type Conversions

Some built-in type conversion methods are:

Method | Description |
---|---|

ToBoolean | converts a type to a boolean value |

ToByte | converts a type to a byte |

ToChar | converts a type to a single character |

ToDateTime | converts a integer type or string type to date-time structures |

ToDecimal | converts a floating point or integer type to a decimal type |

ToDouble | converts a type to a double type |

ToInt16 | converts a type to a 16-bit integer |

ToInt32 | converts a type to a 32-bit integer |

ToInt64 | converts a type to a 64-bit integer |

ToSbyte | converts a type to a signed byte |

ToSingle | converts a type to a small floating point number |

ToString | converts a type to a string |

ToType | converts a type to a specified type |

ToUInt16 | converts a type to an unsigned int type |

ToUInt32 | converts a type to an unsigned long type |

ToUInt64 | converts a type to an unsigned big integer |