C# Type Conversion & Casting
C# supports two types of type conversion: implicit conversion and explicit conversion (also known as casting).
Implicit Conversion
Implicit conversion occurs automatically when the compiler can safely convert a value of one type to another type without the risk of losing information or causing errors. For example, you can assign an int
value to a long
variable without explicit conversion, because a long
can represent any value that an int
can represent.
int x = 10; long y = x; // implicit conversion from int to longSource:www.theitroad.com
In this example, the value of x
is implicitly converted to a long
and assigned to y
.
Explicit Conversion (Casting)
Explicit conversion (casting) is required when the compiler cannot automatically convert a value of one type to another type. For example, you cannot assign a long
value to an int
variable without explicit conversion, because a long
can represent larger values than an int
.
long x = 123456789; int y = (int)x; // explicit conversion from long to int
In this example, the value of x
is explicitly converted to an int
using the cast operator (int)
.
C# provides several cast operators for converting between types, including:
(bool)
(byte)
(char)
(decimal)
(double)
(float)
(int)
(long)
(sbyte)
(short)
(uint)
(ulong)
(ushort)
Note that not all type conversions are valid, and attempting to convert incompatible types can result in run-time errors. It's important to understand the limitations and risks of type conversion, and to use casting only when necessary and with caution.