8.2.2 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.