Должен ли я использовать Int или Int32 - PullRequest
339 голосов
/ 15 сентября 2008

В C # int и Int32 - это одно и то же, но я несколько раз читал, что int предпочтительнее, чем Int32 без объяснения причин. Есть ли причина, и мне все равно?

Ответы [ 34 ]

5 голосов
/ 15 сентября 2008

Я знаю, что лучше всего использовать int, а весь код MSDN использует int. Тем не менее, насколько я знаю, нет никаких причин, кроме стандартизации и согласованности.

5 голосов
/ 16 сентября 2008

Хотя они (в основном) идентичны (см. Ниже разницу между [ошибками]), вам, безусловно, следует позаботиться и использовать Int32.

  • Имя 16-разрядного целого числа - Int16. Для 64-разрядного целого числа это Int64, а для 32-разрядного целого числа интуитивно понятный выбор: int или Int32?

  • Вопрос о размере переменной типа Int16, Int32 или Int64 является самостоятельным, но вопрос о размере переменной типа int является вполне допустимым вопросом и вопросами, независимо от того, как тривиальны, отвлекают, приводят к путанице, тратят время, мешают обсуждению и т. д. (тот факт, что этот вопрос существует, подтверждает это).

  • Использование Int32 способствует тому, что разработчик осознает свой выбор типа. Насколько велика снова инт? Ах да, 32. Вероятность того, что размер шрифта будет фактически учтен, больше, когда размер включен в имя. Использование Int32 также способствует знанию других вариантов. Когда люди не вынуждены хотя бы признавать, что есть альтернативы, для int становится слишком просто стать «целочисленным типом».

  • Класс в рамках, предназначенный для взаимодействия с 32-разрядными целыми числами, называется Int32. Еще раз, а именно: более интуитивно понятный, менее запутанный, отсутствует (ненужный) перевод (не перевод в системе, а в сознании разработчика) и т. Д. int lMax = Int32.MaxValue или Int32 lMax = Int32.MaxValue?

  • int не является ключевым словом во всех языках .NET.

  • Хотя есть аргументы, почему он вряд ли когда-либо изменится, int не всегда может быть Int32.

Недостатками являются два дополнительных символа для ввода и [ошибка].

Это не скомпилируется

public enum MyEnum : Int32
{
    AEnum = 0
}

Но это будет:

public enum MyEnum : int
{
    AEnum = 0
}
4 голосов
/ 15 сентября 2008

Тебе все равно. Вы должны использовать int большую часть времени. Это поможет в будущем перенести вашу программу на более широкую архитектуру (в настоящее время int является псевдонимом System.Int32, но это может измениться). Только когда битовая ширина переменной имеет значение (например, для управления макетом в памяти struct), вы должны использовать int32 и другие (со связанным "using System;").

3 голосов
/ 15 сентября 2008

int - это то же самое, что и System.Int32, и при компиляции оно превращается в то же самое в CIL

Мы используем int по соглашению в C #, так как C # хочет выглядеть как C и C ++ (и Java), и именно это мы используем там ...

Кстати, я в конечном итоге использую System.Int32 при объявлении импорта различных функций Windows API. Я не уверен, является ли это определенным соглашением или нет, но это напоминает мне, что я собираюсь во внешнюю DLL ...

3 голосов
/ 15 декабря 2008

Я бы рекомендовал использовать Microsoft StyleCop .

Это похоже на FxCop , но для вопросов, связанных со стилем. Конфигурация по умолчанию соответствует внутренним руководствам по стилю Microsoft, но ее можно настроить для вашего проекта.

Это может занять некоторое время, чтобы привыкнуть, но это определенно делает ваш код приятнее.

Вы можете включить его в процесс сборки для автоматической проверки на наличие нарушений.

3 голосов
/ 15 сентября 2008

int - это ярлык языка C # для System.Int32

Хотя это действительно означает, что Microsoft может изменить это отображение, в посте обсуждений FogCreek говорится: [источник]

"Что касается 64-битной проблемы - Microsoft действительно работает над 64-битной версией .NET Framework, но я почти уверен, что int НЕ будет отображаться на 64-битную в этой системе. 1009 * Причины:

1. Стандарт C # ECMA, в частности, гласит, что int 32-битный, а long 64-битный.

2. Microsoft ввела дополнительные свойства и методы в Framework версии 1.1, которые возвращают длинные значения вместо значений int, такие как Array.GetLongLength в дополнение к Array.GetLength.

Так что я думаю, можно с уверенностью сказать, что все встроенные типы C # будут сохранять свое текущее отображение. "

3 голосов
/ 15 сентября 2008

Когда-то тип данных int был привязан к размеру регистра машины, на которую указывает компилятор. Так, например, компилятор для 16-разрядной системы будет использовать 16-разрядное целое число.

Тем не менее, мы, к счастью, больше не видим 16-битного большого количества, и когда 64-битное начало становиться популярным, люди стали больше заботиться о том, чтобы сделать его совместимым со старым программным обеспечением, а 32-битное было так долго, что для большинства для компиляторов int просто считается 32-битным.

2 голосов
/ 15 сентября 2008

Вам все равно. Если размер имеет значение, я бы использовал byte, short, int, затем long. Единственная причина, по которой вы используете int больше, чем int32, это если вам нужно число больше 2147483647 или меньше -2147483648.

Кроме того, мне было бы все равно, есть много других вопросов, которые нужно беспокоить.

2 голосов
/ 15 сентября 2008

int и Int32 одинаковы. int является псевдонимом для Int32.

2 голосов
/ 15 сентября 2008

На практике это не имеет значения, и со временем вы примете собственное соглашение. Я склонен использовать ключевое слово при назначении типа и версию класса при использовании статических методов и тому подобное:

int total = Int32.Parse ("1009");

...