2010-06-18 36 views
16

¿Cuál es la diferencia entre usar int y uint? Todos los ejemplos que he visto hasta ahora están usando int para enteros. ¿Alguna ventaja de usar uint? Gracias.Diferencia de uso de int y uint y cuándo usar

+1

Relacionado: http://stackoverflow.com/questions/33852/using-unsigned-primitive-types – kennytm

Respuesta

15

uint significa sin signo int, se puede utilizar para un rango 0 .. + 4G
donde lo normal (firmado) int tiene un -2G .. + rango 2G.

¿Cuándo usarlo? Casi nunca. No es un tipo compatible con CLS, por lo que debe nunca usarlo en la interfaz pública de un ensamblaje. No todos los lenguajes .NET pueden manejarlo.

Su uso principal es en P/Invocar a código no administrado y algunas situaciones de máscara de bits raras. En .NET, hacemos la mayoría de las máscaras de bit con ints normalizados.

+0

Así que mejor quedarse con solo int en la práctica? – ThickBook

+0

@Thickbook: Sí, hasta que tenga una razón muy clara para usar uint, lo que será raro. –

+1

@ThickBook: Sí, también me quedaría con int en la práctica. Incluso si no necesita números negativos, casi no hay soporte para uint en la mayoría de las interfaces. Casting no es tan trivial, porque podría ser demasiado alto. Just int es estándar, por ejemplo, también para las propiedades Count y Length, que nunca son negativas por definición. –

4

En primer lugar, uint es no CLS-obediente (otros lenguajes, que apuntan a la plataforma .NET no necesariamente lo implementan), y debe evitar usarlo en una API pública siempre que sea posible. Bueno, y por supuesto difieren por rango (0 ... 4,294,967,295) para uint y (-2,147,483,648 a 2,147,483,647) para int.

3

La diferencia principal es simplemente que int está firmado, mientras que uint no está firmado. Porque uint no permite números negativos, tiene un rango de 0 a 4.294.967.295, en comparación con el rango de -2.147.483.648 a 2.147.483.647 para un int

Si tiene un escenario en el que no puede tener enteros negativos o no lo hace Tiene sentido tener un valor negativo, entonces los enteros sin signo pueden ser una buena opción. Sin embargo, si no necesitas el rango extra y simplemente nunca bajas de 0, entonces realmente no importa y puedes guardar un personaje usando un int.

Cuestiones relacionadas