Al asignar un valor predeterminado a un parámetro uint
en un argumento de método C#, como se muestra en el primer bloque de código a continuación, aparece el mensaje "Un valor de tipo 'int' no se puede usar como parámetro predeterminado porque hay no hay conversiones estándar para escribir 'uint' ", mientras que al asignar una variable int a uint en el cuerpo del método está bien.¿Por qué no es válido asignar un valor entero a un parámetro uint en un argumento de método C#?
El código se compila; la advertencia se proporciona por medio de los colores rojo, subrayando serpenteante en Visual Studio 2010.
void GetHistoricData(uint historyLength = 365)
{
uint i = 365; // this is valid
}
Esto se resuelve fácilmente mediante el uso de 365U en lugar de 365, por lo tanto:
void GetHistoricData(uint historyLength = 365U)
{
// method body
}
Me resulta es realmente difícil encontrar una buena explicación de por qué no es válido asignar un int
al uint
en el parámetro cuando es válido para hacerlo en otro lugar. ¿Alguien puede ayudarme con el momento de "bombilla" que estoy tratando de encontrar?
El subrayado rojo significa que no se puede compilar. ¿Has intentado reiniciar VS? – Tsabo
Creo que es específico para su configuración: las advertencias no se muestran en mi código con el "subrayado rojo, ondulado". –
Un reinicio del estudio visual ha provocado que ReSharper muestre su bombilla a la izquierda cuando se resalta el subrayado, lo que indica que esta es solo una de esas advertencias de ReSharper. – Jason