Какое-то время я заметил, что программисты на C # обычно везде используют int и редко прибегают к uint. Но я так и не нашел удовлетворительного ответа на вопрос, почему.
Если ваша цель - совместимость, uint не должен появляться в общедоступных API, потому что не все языки интерфейса командной строки поддерживают целые числа без знака. Но это не объясняет, почему int настолько распространен даже во внутренних классах. Я подозреваю, что это причина того, что uint экономно используется в BCL.
В C ++, если у вас есть целое число, для которого отрицательные значения не имеют смысла, вы выбираете целое число без знака.
Это явно означает, что отрицательные числа недопустимы и не ожидаются, и компилятор выполнит некоторую проверку за вас. Я также подозреваю, что в случае индексов массива JIT может легко отказаться от проверки нижних границ.
Однако при смешивании типов int и unit потребуется дополнительная осторожность и приведение типов.
Следует ли использовать uint больше? Почему?