Если я использую интервал или Int32

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

344
задан 4 revs, 2 users 75% 28 May 2017 в 08:05
поделиться

32 ответа

спецификация языка (p18) ECMA-334 :2006 C#:

Каждый из предварительно определенных типов является стенографией для обеспеченного системой типа. Например, ключевое слово int относится к структуре System.Int32. Как стиль, использование ключевого слова одобрено по использованию имени типа полной системы.

130
ответ дан 3 revs, 3 users 57% 23 November 2019 в 00:31
поделиться

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

, Если Вы волнуетесь по поводу управления памятью, затем рассмотрите, почему 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  КБ (так) памяти, которую Вы тратите впустую ПРОСТО ТАМ.

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

-4
ответ дан 3 revs, 3 users 67% 28 July 2019 в 11:07
поделиться

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

-13
ответ дан 28 July 2019 в 11:07
поделиться

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

1
ответ дан 2 revs, 2 users 80% 23 November 2019 в 00:31
поделиться

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

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

то же идет для любого из ключевых слов типа.

1
ответ дан 2 revs, 2 users 50%anon 23 November 2019 в 00:31
поделиться

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

0
ответ дан Stacker 23 November 2019 в 00:31
поделиться

Это не имеет значения. интервал является ключевым словом языка и Int32 его фактический системный тип.

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

0
ответ дан 2 revs 23 November 2019 в 00:31
поделиться

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

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

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

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

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

Удобный в сопровождении ihmo всегда будет применим, потому что человек, поддерживающий Ваш код, не может знать об этой конкретной спецификации C#, и отсутствовать, ошибка был интервал, иногда становится больше чем 2 147 483 647.

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

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

0
ответ дан 2 revs 23 November 2019 в 00:31
поделиться

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

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

0
ответ дан bovium 23 November 2019 в 00:31
поделиться

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

, Кроме которого я не заботился бы, существует много других объектов, которые будут касаться в.

2
ответ дан 2 revs, 2 users 80% 23 November 2019 в 00:31
поделиться

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

0
ответ дан 2 revs, 2 users 67% 23 November 2019 в 00:31
поделиться

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

0
ответ дан 2 revs, 2 users 50% 23 November 2019 в 00:31
поделиться

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

я не забыл видеть этот стиль в другом примере кода от Microsoft. Так, я провел некоторое исследование и нашел, что все говорят, что нет никакого различия между “Int32” и “int” за исключением окраски синтаксиса. На самом деле я нашел, что много материала, предлагающего Вас, использует “Int32” для создания кода более читаемым. Так, я принял стиль.

На днях я действительно находил различие! Компилятор doesn’t позволяет Вам вводить перечисление с помощью “Int32”, но это делает при использовании “int”. Don’t спрашивают меня почему, потому что я don’t знаю все же.

Пример:

public  enum MyEnum : Int32
{
    AEnum = 0
}

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

public enum MyEnum : int
{
    AEnum = 0
}

Взятый от: нотация Int32 по сравнению с интервалом

0
ответ дан 2 revs, 2 users 88% 23 November 2019 в 00:31
поделиться

int и Int32 то же. int псевдоним для Int32.

2
ответ дан 2 revs, 2 users 67% 23 November 2019 в 00:31
поделиться

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

международное общее количество = Int32. Синтаксический анализ ("1009");

2
ответ дан chrisb 23 November 2019 в 00:31
поделиться

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

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

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

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

3
ответ дан 2 revs, 2 users 70% 23 November 2019 в 00:31
поделиться

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

получающийся код будет идентичен: различием является просто одно из появления кода или удобочитаемости.

268
ответ дан 2 revs, 2 users 80% 23 November 2019 в 00:31
поделиться

Они оба объявляют целые числа на 32 бита, и как другие указанные плакаты, какой, который Вы используете, является главным образом вопросом синтаксического стиля. Однако они не всегда ведут себя тот же путь. Например, компилятор C# не позволит это:

public enum MyEnum : Int32
{
    member1 = 0
}

, но это позволит это:

public enum MyEnum : int
{
    member1 = 0
}

Пойди разберись.

85
ответ дан raven 23 November 2019 в 00:31
поделиться

Я всегда использую системные типы - например, Int32 вместо интервала. Я принял эту практику после чтения Прикладное Программирование Платформы.NET - автор Jeffrey Richter делает хороший случай для использования полных имен типов. Вот две точки, которые придерживались меня:

  1. Имена типов могут варьироваться между языками.NET. Например, в C#, long карты к Системе. Int64, в то время как в C++ с управляемыми расширениями, long карты к Int32. Так как языки могут быть смешаны-и-подобраны при использовании.NET, можно быть уверены, что использование явного имени класса всегда будет более четким, неважно, предпочтительный язык читателя.

  2. Много методов платформы имеют имена типов как часть их имен методов:

    BinaryReader br = new BinaryReader( /* ... */ );

    float val = br.ReadSingle(); // OK, but it looks a little odd...

    Single val = br.ReadSingle(); // OK, and is easier to read

48
ответ дан 4 revs, 3 users 82% 23 November 2019 в 00:31
поделиться

интервал является ключевым словом C# и однозначен.

Большую часть времени это не имеет значения, но две вещи, которые идут вразрез с Int32:

  • у Вас должна быть "Система использования"; оператор. использование "интервала" не требует никакого оператора использования.
  • возможно определить Ваш собственный класс по имени Int32 (который был бы глуп и сбивал бы с толку). интервал всегда означает интервал
20
ответ дан Brownie 23 November 2019 в 00:31
поделиться

Как уже указано, int = Int32. Быть безопасным, убедиться всегда использовать int.MinValue / int.MaxValue при реализации чего-либо, что заботится о границах типа данных. Предположим, что.NET решила, что int теперь будет Int64, Ваш код менее зависел бы от границ.

12
ответ дан spoulson 23 November 2019 в 00:31
поделиться

Размер байта для типов не слишком интересен, когда только необходимо иметь дело с единственным языком (и для кода, которому Вы не должны напоминать сами о математическом переполнении). Часть, которая становится интересной, - когда Вы образуете мост между одним языком другому, C# к COM-объекту, и т.д., или Вы делаете некоторое смещение бита или маскирование, и необходимо напомнить себе (и Ваш обзор кода co-wokers) размера данных.

На практике, я обычно использую Int32 только для напоминания мне, какой размер они - то, потому что я действительно пишу управляемый С++ (для образования моста к C#, например), а также неуправляемый/собственный C++.

Long, поскольку Вы, вероятно, знаете, в C# 64 бита, но в собственном C++, он заканчивается как 32 бита, или символ unicode/16-bits, в то время как в C++ это - 8 битов. Но как мы знаем это? Ответ, потому что мы искали его в руководстве, и он сказал так.

Со временем и событиями, Вы начнете быть более добросовестными типом, когда Вы действительно запишете коды для образования моста между C#, и другие языки (некоторые читатели здесь думают, "почему был бы Вы?"), но по моему скромному мнению я полагаю, что это - лучшая практика, потому что я не могу помнить то, что я кодировал на прошлой неделе (или я не должен определять в своем документе API, что "этот параметр является целым числом на 32 бита").

В F# (хотя я никогда не использовал его), они определяют интервал , int32, и nativeint. Тот же вопрос должен повыситься, "который я использую?". Как другие упомянул, в большинстве случаев, это не должно иметь значения (должно быть прозрачным). Но я для можно было бы выбрать int32 и uint32 только для удаления неоднозначностей.

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

9
ответ дан 2 revs, 2 users 71% 23 November 2019 в 00:31
поделиться

Нет никакого различия между int и Int32, но как int ключевое слово языка, многие люди предпочитают его стилистически (так же, как с string по сравнению с String).

8
ответ дан 2 revs, 2 users 67% 23 November 2019 в 00:31
поделиться

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

  1. Более быстрый для ввода.
  2. более знакомый типичному разработчику C#.
  3. А различный цвет в подсветке синтаксиса Visual Studio по умолчанию.

я особенно люблю тот последний.:)

7
ответ дан Greg D 23 November 2019 в 00:31
поделиться

Я всегда использую искаженные типы (интервал, строка, и т.д.) при определении переменной и использую настоящее имя при доступе к статическому методу:

int x, y;
...
String.Format ("{0}x{1}", x, y);

Это просто кажется ужасным для наблюдения чего-то как интервал. TryParse (). Нет никакой другой причины, я делаю это кроме стиля.

6
ответ дан 2 revs, 2 users 86% 23 November 2019 в 00:31
поделиться

Я знаю, что лучшая практика должна использовать интервал, и весь код MSDN использует интервал Однако нет причины вне стандартизации и непротиворечивости, насколько я знаю.

5
ответ дан 2 revs, 2 users 50% 23 November 2019 в 00:31
поделиться

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

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

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

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

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

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

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

недостатки являются двумя дополнительными символами, чтобы ввести и [прослушивать].

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

public enum MyEnum : Int32
{
    AEnum = 0
}

, Но это будет:

public enum MyEnum : int
{
    AEnum = 0
}
5
ответ дан 3 revs, 2 users 84%unknown (yahoo) 23 November 2019 в 00:31
поделиться

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

4
ответ дан 3 revs, 2 users 75% 23 November 2019 в 00:31
поделиться

интервал является ярлыком языка C# для Системы. Int32

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

"По проблеме на 64 бита - Microsoft действительно работает над 64-разрядной версией Платформы.NET, но я - вполне уверенный интервал, НЕ отобразится на 64, обдумал ту систему.

Причины:

1. В стандарте ECMA C# конкретно говорится, что интервал составляет 32 бита и долго составляет 64 бита.

2. Microsoft представила дополнительные свойства & методы в версии 1.1 Платформы, которые возвращают длинные значения вместо международных значений, таких как Массив. GetLongLength, кроме того, для Выстраивания. GetLength.

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

3
ответ дан Ray Hayes 23 November 2019 в 00:31
поделиться

интервал совпадает с Системой. Int32 и, когда скомпилировано это превратится в то же самое в CIL.

Мы используем интервал условно в C#, так как C# хочет быть похожим на C и C++ (и Java) и именно это мы используем там...

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

3
ответ дан 2 revs, 2 users 62% 23 November 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: