¿Alguien sabe por qué el último no funciona?Operador coalescente nulo dando conversión especificada no es válido int corto
object nullObj = null;
short works1 = (short) (nullObj ?? (short) 0);
short works2 = (short) (nullObj ?? default(short));
short works3 = 0;
short wontWork = (short) (nullObj ?? 0); //Throws: Specified cast is not valid
[Representación e identidad] (http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx) explica por qué esto es necesario (es decir, por qué esto no es hecho automáticamente con solo 1 lanzamiento). – Brian