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

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

Ответы [ 34 ]

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

int - псевдоним для System.Int32, как определено в этой таблице: Таблица встроенных типов (C # Reference)

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

Я использую int в том случае, если Microsoft меняет реализацию по умолчанию для целого числа на какую-то новую ненастоящую версию (назовем это Int32b).

Microsoft может затем изменить псевдоним int на Int32b, и мне не нужно менять какой-либо код, чтобы воспользоваться преимуществами их новой (и, надеюсь, улучшенной) целочисленной реализации.

То же самое относится к любому из ключевых слов типа.

0 голосов
/ 30 мая 2014

На платформе x86 Int == Int32. Но на x64 Int == Int64.

0 голосов
/ 24 августа 2010

Не рекомендуется использовать int вместо Int32, как утверждают многие из ответов, но для этого есть веская причина. Int32 всегда 32-битный, int 32-битный в 32-кратной системе и 64-битный в 64-кратной системе.

0 голосов
/ 03 июля 2013

В соответствии с Immediate Window в Visual Studio 2012 Int32 - это int, Int64 - это long. Вот вывод:

sizeof(int)
4
sizeof(Int32)
4
sizeof(Int64)
8
Int32
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648
Int64
long
    base {System.ValueType}: System.ValueType
    MaxValue: 9223372036854775807
    MinValue: -9223372036854775808
int
int
    base {System.ValueType}: System.ValueType
    MaxValue: 2147483647
    MinValue: -2147483648
0 голосов
/ 15 сентября 2008

Вас не должно волновать большинство языков программирования, если только вам не нужно писать очень конкретные математические функции или код, оптимизированный для одной конкретной архитектуры ... Просто убедитесь, что вам достаточно размера типа (используйте что-то большее Int, если вы знаете , вам потребуется, например, более 32 бит)

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

Число байтов, которое может содержать int, зависит от того, для чего вы его скомпилировали, поэтому, когда вы компилируете свою программу для 32-битных процессоров, она содержит числа от 2 ^ 32/2 до -2 ^ 32/2 + 1, а компилируется для 64 бит может содержать от 2 ^ 64/2 до -2 ^ 64/2 + 1. int32 всегда будет содержать 2 ^ 32 значения.

Редактировать : Не обращайте внимания на мой ответ, я не видел C #. Мой ответ был предназначен для C и C ++. Я никогда не использовал C #

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

Использование Int или Int32 - это то же самое, что просто упрощение кода для читателя.

Использовать Nullable вариант Int? или Int32? при работе с базами данных на полях, содержащих ноль. Это избавит вас от многих проблем во время выполнения.

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

Некоторые компиляторы имеют разные размеры для int на разных платформах (не специфично для C #)

Некоторые стандарты кодирования (MISRA C) требуют, чтобы все используемые типы имели заданный размер (т. Е. Int32, а не int).

Также полезно указывать префиксы для переменных разных типов (например, b для 8-битного байта, w для 16-битного слова и l для 32-битного длинного слова => Int32 lMyVariable)

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

Portable может не применяться к C #, если вы всегда собираетесь использовать C # и спецификация C # никогда не изменится в этом отношении.

Поддерживаемый ihmo всегда будет применим, потому что человек, обслуживающий ваш код, может не знать об этой конкретной спецификации C # и пропустить ошибку, если значение int иногда становится больше 2147483647.

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

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

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

Это не имеет значения. int - это ключевое слово языка, а Int32 - фактический тип системы.

См. Также мой ответ здесь на связанный вопрос.

...