Saludos,C# - Valor constante '4294901760' no se puede convertir a un 'int'
no puedo creer que esté haciendo una pregunta tan básica, pero no tiene sentido lo que aquí está:)
En C# en Windows Phone 7/.net, estoy tratando de definir una constante en una clase de la siguiente manera:
// error CS0266: Cannot implicitly convert type 'uint' to 'int'.
// An explicit conversion exists (are you missing a cast?)
public const int RED = 0xffff0000;
Si pongo un (int) colado a su alrededor como tal, me sale otro error:
// error CS0221: Constant value '4294901760' cannot be converted to a 'int'
// (use 'unchecked' syntax to override)
public const int RED = (int)0xffff0000;
Pero sé que mi int es de 32 bits, por lo tanto tiene un rango de -2147483648 a 2147483647, ver http://msdn.microsoft.com/en-us/library/5kzh1b5w(v=vs.80).aspx
Entonces, ¿qué pasa?
¡Gracias de antemano!
porcina
Sí, por supuesto. Debe llegar tarde Entonces ... si uso desmarcado, C# truncará el valor o lo ajustará, preservando los datos? – swinefeaster
http://msdn.microsoft.com/en-us/library/a569z7k8%28v=vs.71%29.aspx. Entonces: en un contexto no verificado, si una expresión produce un valor que está fuera del rango del tipo de destino, el resultado se trunca. – VikciaR
@Vik esa página es un poco engañosa (la última versión es mejor) - dado que los tipos de datos aquí son del mismo tamaño, en realidad no están 'truncados' – AakashM