Размер байта для типов не слишком интересен, когда вам приходится иметь дело только с одним языком (и для кода, который вам не нужно напоминать себе о математических переполнениях). Интересной становится часть, когда вы соединяете один язык с другим, C # с COM-объектом и т. Д., Или когда вы выполняете какое-то переключение битов или маскируете, и вам нужно напомнить себе (и вашим коллегам по пересмотру кода) размера данных.
На практике я обычно использую Int32 только для того, чтобы напомнить себе, какого они размера, потому что я пишу управляемый C ++ (например, для соединения с C #), а также неуправляемый / нативный C ++.
Как вы, наверное, знаете, в C # он 64-битный, но в нативном C ++ он заканчивается как 32-битный, или char является unicode / 16-битным, в то время как в C ++ он 8-битный. Но откуда мы это знаем? Ответ таков, потому что мы посмотрели его в руководстве и сказали, что так.
Со временем и опытом вы начнете быть более добросовестным, когда будете писать коды для связи между C # и другими языками (некоторые читатели здесь думают: «Зачем вы?»), Но я думаю, что это лучшая практика, потому что Я не могу вспомнить, что я кодировал на прошлой неделе (или мне не нужно указывать в своем документе API, что «этот параметр является 32-разрядным целым числом»).
В F # (хотя я никогда не использовал его) они определяют int , int32 и nativeint . Тот же самый вопрос должен подняться: «Какой из них я использую?». Как уже упоминали другие, в большинстве случаев это не должно иметь значения (должно быть прозрачным). Но я бы, например, выбрал int32 и uint32, чтобы убрать неясности.
Я полагаю, что это будет зависеть от того, какие приложения вы кодируете, кто его использует, какие практики кодирования вы и ваша команда используете, и т. Д., Чтобы обосновать, когда использовать Int32.