ho osservato per un po 'che C# programmatori tendono ad usare int ovunque, e raramente ricorrere a uint. Ma non ho mai trovato una risposta soddisfacente al perché.utilizzando uint vs int
Se l'interoperabilità è il vostro obiettivo, uint non dovrebbe apparire in API pubbliche, perché non tutte le lingue CLI supportano interi senza segno. Ma questo non spiega perché int sia così diffuso, anche nelle classi interne. Sospetto che questo sia il motivo per cui uint viene usato con parsimonia nel BCL.
In C++, se si dispone di un numero intero per il quale i valori negativi non hanno alcun senso, si sceglie un intero senza segno.
Ciò significa chiaramente che i numeri negativi non sono consentiti o previsti e il compilatore eseguirà alcuni controlli. Sospetto anche nel caso degli indici di array, che il JIT possa facilmente abbandonare il controllo dei limiti inferiori.
Tuttavia, quando si mescolano i tipi int e unità, saranno necessari ulteriore assistenza e trasmissioni.
caso uint essere utilizzato di più? Perché?
http://stackoverflow.com/questions/6301/why-is-array-length-an-int-and-not-an-uint – drharris
Appena ho avuto un deja vu: D, quasi esatta la stessa domanda è stato chiesto poco fa. – KroaX
Come per i controlli dei limiti inferiori (nel caso sia necessario scriverne uno proprio) è possibile sostituire 'if (i < 0 || i > = length)' con 'if (deselezionato ((uint) i)> = length)'. L'IL risultante avrà un'istruzione (derivata) in meno in totale e darà approssimativamente le stesse prestazioni (infinitamente più veloce). Personalmente lo amo semplicemente perché mi graffia il prurito contro il controllo dei limiti inferiori. È probabile che altri si discuteranno a causa di "incontrollato", ma io sostengo che questa è una buona linea per imparare il suo significato perché è semplice e immediatamente libera dal contesto qual è lo scopo = aiuta il lettore ad imparare. – AnorZaken