Conversions

The predefined types also have predefined conversions. For instance, conversions exist between the predefined types int and long. C# differentiates between two kinds of conversions: implicit conversions and explicit conversions. Implicit conversions are supplied for conversions that can safely be performed without careful scrutiny. For instance, the conversion from int to long is an implicit conversion. This conversion always succeeds, and never results in a loss of information. The following example using System; class Test { static void Main() { int intValue = 123; long longValue = intValue; Console.WriteLine("{0}, {1}", intValue, longValue); } } implicitly converts an int to a long.
In contrast, explicit conversions are performed with a cast expression. The example using System; class Test { static void Main() { long longValue = Int64.MaxValue; int intValue = (int) longValue; Console.WriteLine("(int) {0} = {1}", longValue, intValue); } } uses an explicit conversion to convert a long to an int. The output is: (int) 9223372036854775807 = -1 because an overflow occurs. Cast expressions permit the use of both implicit and explicit conversions.