me gustaría entender por qué en .NET existen nueve tipos de enteros: Char
, Byte
, SByte
, Int16
, UInt16
, Int32
, UInt32
, Int64
y UInt64
; más otros tipos numéricos: Single
, Double
, Decimal
; y todos estos tipos no tienen ninguna relación.Primitivas .NET y jerarquías de tipos, ¿por qué fue diseñado así?
Cuando empecé a codificar en C#, pensé "genial, hay un tipo uint
, lo voy a usar cuando los valores negativos no estén permitidos". Entonces me di cuenta de que ninguna API usaba uint
sino int
, y que uint
no se derivaba de int
, por lo que era necesaria una conversión.
¿Cuál es la aplicación en el mundo real de estos tipos? ¿Por qué no tener, en cambio, integer
y positiveInteger
? Estos son tipos que puedo entender. La edad de una persona en años es positiveInteger
, y dado que positiveInteger
es un subconjunto de integer
, existe la necesidad de conversión siempre que se espere integer
.
El siguiente es un diagrama de la jerarquía de tipos en XPath 2.0 y XQuery 1.0. Si mira debajo de xs:anyAtomicType
, puede ver la jerarquía numérica decimal
>integer
>long
>int
>short
>byte
. ¿Por qué no se diseñó .NET así? ¿Será el nuevo marco "Oslo" diferente?
Acerca de uint no en API, eche un vistazo a la CLS. http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx – Dykam