Vengo de un fondo en su mayoría C/C++ antes de comenzar a usar C#. Una de las cosas que hice con mi primer proyecto en C# fue hacer una clase como esta¿Por qué los tipos de CLR sin firmar son tan difíciles de usar en C#?
class Element{
public uint Size;
public ulong BigThing;
}
entonces yo estaba mortificado por el hecho de que esto requiere de calidad:
int x=MyElement.Size;
al igual que
int x=5;
uint total=MyElement.Size+x;
¿Por qué los diseñadores de idiomas decidieron hacer que los tipos de entero con signo y sin signo no se moldeen implícitamente? ¿Y por qué los tipos sin firmar no se usan más en toda la biblioteca .Net? Por ejemplo, String.Length
nunca puede ser negativo, sin embargo, es un número entero con signo.
Incluso en C++ un lanzamiento de unsigned a signed o back provoca una advertencia. –
@Seva según el compilador: P .. Me doy cuenta de que mi primer caso es débil, pero mi segundo caso es más lo que quiero decir porque no hay posibilidad de pérdida de datos a menos que 'x' sea negativo – Earlz
En el segundo recuento , mira mi respuesta a continuación ... –