Zauważyłem przez jakiś czas, że programiści C # mają tendencję do używania int wszędzie i rzadko uciekają się do uint. Ale nigdy nie znalazłem satysfakcjonującej odpowiedzi, dlaczego.
Jeśli Twoim celem jest interoperacyjność, uint nie powinien pojawiać się w publicznych interfejsach API, ponieważ nie wszystkie języki interfejsu wiersza polecenia obsługują liczby całkowite bez znaku. Ale to nie wyjaśnia, dlaczego int jest tak powszechne, nawet na klasach wewnętrznych. Podejrzewam, że jest to powód, dla którego uint jest używany oszczędnie w BCL.
W C ++, jeśli masz liczbę całkowitą, dla której wartości ujemne nie mają sensu, wybierz liczbę całkowitą bez znaku.
To wyraźnie oznacza, że liczby ujemne są niedozwolone lub oczekiwane, a kompilator sprawdzi za Ciebie. Podejrzewam też, że w przypadku indeksów tablicowych, JIT może łatwo zrzucić sprawdzanie dolnej granicy.
Jednak podczas mieszania typów int i jednostek konieczna będzie dodatkowa ostrożność i odlewy.
Czy należy używać go częściej? Czemu?