He observado por un tiempo que los programadores de C# tienden a usar int en todas partes, y rara vez recurren a uint. Pero nunca descubrí una respuesta satisfactoria sobre por qué.usando uint vs int
Si la interoperabilidad es su objetivo, uint no debería aparecer en las API públicas porque no todos los lenguajes CLI admiten enteros sin signo. Pero eso no explica por qué int es tan frecuente, incluso en las clases internas. Sospecho que esta es la razón por la cual uint se usa con moderación en el BCL.
En C++, si tiene un número entero para el que los valores negativos no tienen sentido, debe elegir un entero sin signo.
Esto claramente significa que los números negativos no son permitidos o esperados, y el compilador hará una cierta verificación por usted. También sospecho que en el caso de los índices de matriz, el JIT puede soltar fácilmente la verificación de límites inferiores.
Sin embargo, al mezclar int y tipos de unidades, se necesitarán cuidados adicionales y moldes.
¿Debería usarse más? ¿Por qué?
http://stackoverflow.com/questions/6301/why-is-array-length-an-int-and-not-an-uint – drharris
Sólo heught Tuve un deja vu: D, casi exactamente la misma pregunta se ha preguntado hace poco tiempo. – KroaX
En cuanto a las comprobaciones de límites inferiores (en caso de que necesite escribir las suyas), puede reemplazar 'if (i < 0 || i > = length)' con 'if (unchecked ((uint) i)> length)'. IL resultante tendrá una instrucción (rama) menos en total y dará aproximadamente el mismo rendimiento (infinitesimalmente más rápido). Personalmente, me encanta porque me rasca la comezón de comprobar los límites inferiores. Es probable que otros argumenten en contra de ella debido a que "no se controla", pero yo sostengo que esta es una muy buena línea para aprender su significado porque es simple e instantáneamente claro desde el contexto cuál es el propósito = ayuda al lector a aprender. – AnorZaken