Usando Casting null doesn't compile como fuente de inspiración, y desde el comentario de Eric Lippert:¿Por qué esta conversión implícita de int a uint funciona?
Eso demuestra un caso interesante. "uint x = (int) 0;" sería tener éxito a pesar de que int no es implícitamente convertible a uint.
Sabemos que esto no funciona, porque object
no se pueden asignar a string
:
string x = (object)null;
Pero esto, aunque intuitivamente que no deben:
uint x = (int)0;
Por qué hace el compilador permite este caso, cuando int
no es implícitamente convertible a uint
?
Supongo que la misma razón 'unidad x = 0' funciona. '0' es un int firmado a menos que especifique' unit x = 0U'. – vcsjones
Probablemente 6.1.9 de la especificación y el descuento del int cast, porque 0 ya es un int. Aunque generalmente un int no es implícitamente convertible a uint (6.1.2), se puede convertir una * expresión constante * de tipo int. –
¿Qué valor tiene '0' implícitamente como expresión constante entonces?¿El compilador simplemente ignora el molde explícito '(int)' y trata a '0' como una constante' uint'? – Yuck