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

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

Ответы [ 34 ]

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

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

Если вы беспокоитесь об управлении памятью, подумайте, почему C # является языком со строгой типизацией и что у вас есть причины int32, int64 и int16.

Учтите это:

for (int i=0; i<100; i++) { }

и

for (Int16 i=0; i<100; i++) { }

и

for (Int64 i=0; i<100; i++) {  }

Какой из них наиболее эффективен? Int16! Вы можете утверждать, что в CIL они одинаковы, но что если у вас вызывающая функция пронизана 1000 раз? Это уже 4 КБ (sic) памяти, которую вы тратите, ТОЛЬКО ТАМ.

Настоящие программисты будут использовать меньшее обозначение, несмотря на то, что оно, возможно, не отличается, потому что семантически оно более корректно и может в будущем скомпилировать. Остальные любители могут не заботиться о мельчайших деталях, и ваш код будет отстой, потому что вам все равно. Это как растение фрикин. Любить это! Не будь неряшливым!

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

Некоторое время назад я работал над проектом с Microsoft, когда нас посетил кто-то из команды Microsoft .NET CLR. Этот человек закодировал примеры, и когда он определил свои переменные, он использовал «Int32» против «int» и «String» против «string».

Я вспомнил, как видел этот стиль в другом примере кода от Microsoft. Итак, я провел небольшое исследование и обнаружил, что все говорят, что нет разницы между «Int32» и «int», за исключением раскраски синтаксиса. На самом деле, я нашел много материала, предлагающего вам использовать «Int32», чтобы сделать ваш код более читабельным. Итак, я принял стиль.

На днях я нашел разницу! Компилятор не позволяет вам набирать enum с помощью «Int32», но он делает, когда вы используете «int». Не спрашивайте меня почему, потому что я еще не знаю.

Пример:

public  enum MyEnum : Int32
{
    AEnum = 0
}

Это работает.

public enum MyEnum : int
{
    AEnum = 0
}

Взято из: Обозначение Int32 против int

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

Для использования типа Int32 требуется указание пространства имен на System или полная квалификация (System.Int32). Я склоняюсь к int, потому что он не требует импорта пространства имен, поэтому в некоторых случаях снижает вероятность конфликта пространства имен. При компиляции в IL нет никакой разницы между ними.

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

Также рассмотрим Int16. Если вам нужно хранить целое число в памяти в вашем приложении и вас беспокоит объем используемой памяти, вы можете использовать Int16, поскольку он использует меньше памяти и имеет меньший минимальный / максимальный диапазон, чем Int32 (то есть, что такое int .)

...