Typecasting in C#
c#
Solution
Casting is usually a matter of telling the compiler that although it only knows that a value is of some general type, you know it's actually of a more specific type. For example:
object x = "hello";
...
// I know that x really refers to a string
string y = (string) x;
There are various conversion operators. The `(typename) expression` form can do three different things:
- An unboxing conversion (e.g. from a boxed integer to `int`)
- A user-defined conversion (e.g. casting `XAttribute` to `string`)
- A reference conversion within a type hierarchy (e.g. casting `object` to `string`)
All of these may fail at execution time, in which case an exception will be thrown.
The `as` operator, on the other hand, never throws an exception - instead, the result of the conversion is `null` if it fails:
object x = new object();
string y = x as string; // Now y is null because x isn't a string
It can be used for unboxing to a nullable value type:
object x = 10; // Boxed int
float? y = x as float?; // Now y has a null value because x isn't a boxed float
There are also implicit conversions, e.g. from `int` to `long`:
int x = 10;
long y = x; // Implicit conversion
Does that cover everything you were interested in?
Problem
What is type casting, what's the use of it? How does it work?