Lets say we are creating a generic method of type T used to convert one type into another. That being said there might be a type conversion exception thrown within the method, if this happens we want to simply return a null indicating that the conversion did not happen correctly. Unfortunately, generic types cannot be set to null, this is because a generic type could be a reference type or a value type depending on what is passed in. Because of this possibility and the fact that value types cannot be implicitly converted to null you must use a new ‘default’ keyword which checks the passed in type to see if it evaluates to a reference type or a value type, if a reference type the passed in type is set to null, if a value type it is set to the default value for that value type.
Unknown Generic Type cannot be NULL and default(T)
8 internal static T Cast(object o)
10 T value;
14 value = (T) o;
18 value = default(T);
21 return value;