Почему необходимо удалить ненужный C# с помощью директив?

Другое событие 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));
}

212
задан Community 23 May 2017 в 00:31
поделиться

12 ответов

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

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

178
ответ дан Darren Kopp 23 November 2019 в 04:28
поделиться

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

0
ответ дан Patrick Desjardins 23 November 2019 в 04:28
поделиться

Оператор 'использования' не влияет на производительность, поскольку это - просто помощник в квалификации названий Ваших идентификаторов. Таким образом вместо того, чтобы иметь необходимость ввести, Система. IO.Path. Объединение (...) , можно просто ввести, Путь. Объединение (...) , если Вы имеете Система использования. IO.

0
ответ дан Jordan Parmer 23 November 2019 в 04:28
поделиться

Оператор использования просто мешает Вам квалифицировать типы, которые Вы используете. Мне лично нравится очищать их. Действительно это зависит от того, как метрика местоположения используется

1
ответ дан CheeZe5 23 November 2019 в 04:28
поделиться

Они просто используются в качестве ярлыка. Например, необходимо было бы записать: Система. Int32 каждый раз, если у Вас не было Системы использования; на вершине.

Удаляющие неиспользованные просто заставляет Ваш код выглядеть более чистым.

1
ответ дан Carra 23 November 2019 в 04:28
поделиться

Отъезд дополнительного using директивы прекрасен. Существует немного значения в удалении их, но не очень. Например, это входит в мои списки завершения IntelliSense короче, и поэтому легче перейти.

скомпилированные блоки не затронуты посторонним using директивы.

Иногда я помещал их в #region и оставляю свернутым; это делает просмотр файла немного более чистым. IMO, это - одно из нескольких хорошего использования #region.

2
ответ дан Jay Bazuzi 23 November 2019 в 04:28
поделиться

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

2
ответ дан mattlant 23 November 2019 в 04:28
поделиться

У Вас могут быть столкновения имени при вызове классов как (неиспользованные) классы в пространстве имен. В случае Системы. Текст, у Вас будет проблема при определении класса под названием "Кодер".

Так или иначе это обычно - незначительная проблема, и обнаруженный компилятором.

4
ответ дан Pablo Fernandez 23 November 2019 в 04:28
поделиться

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

Using используется во время компиляции только в целях разрешить короткие имена типов к полностью определенным именам типов. Таким образом единственный отрицательный эффект, ненужный using, может иметь, замедляет время компиляции немного и берет немного больше памяти во время компиляции. Я не был бы взволнован по поводу этого все же.

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

30
ответ дан Franci Penov 23 November 2019 в 04:28
поделиться

Чистота кода важна.

Каждый начинает получать чувство, что код может не сохраняться и на пути browfield, когда каждый видит лишние использования. В сущности, когда я вижу некоторые неиспользованные операторы использования, немного желтого флага повышается позади моего мозга, говоря мне "соблюсти осторожность". И чтение производственного кода никогда не должно давать Вам то чувство.

Так очищают Ваши использования. Не будьте неаккуратны. Внушите доверие. Сделайте свой код симпатичным. Дайте другой dev что тепло-нечеткое чувство.

36
ответ дан core 23 November 2019 в 04:28
поделиться

Там немного причин удаления неиспользованного использования (использований) / пространства имен, помимо кодирования предпочтения:

  • удаление неиспользованных пунктов использования в проекте, может сделать компиляцию быстрее, потому что компилятор имеет меньше пространств имен к типам поиска для разрешения. (это особенно верно для C# 3.0 из-за дополнительных методов, где компилятор должен искать все пространства имен дополнительные методы для возможных лучших соответствий, универсальный вывод типа и лямбда-выражения, включающие универсальные типы)
  • , может потенциально помочь избежать коллизии имени в будущих сборках, когда новые типы добавляются к неиспользованным пространствам имен, которые имеют то же имя как некоторые типы в используемых пространствах имен.
  • сократит количество объектов в редакторе автоматический список завершения при кодировании, возможно продвижении к более быстрому вводу (в C# 3.0, это может также уменьшить список дополнительных показанных методов)

, Что удаление неиспользованных пространств имен не будет делать:

  • изменяют всегда вывод компилятора.
  • изменяют всегда осуществление скомпилированной программы (быстрее загрузка или лучшая производительность).

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

469
ответ дан Pop Catalin 23 November 2019 в 04:28
поделиться

It’s персональное предпочтение главным образом. Я чищу их сам (Resharper делает хорошее задание сообщения мне когда there’s ненужные операторы использования).

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

2
ответ дан Josh Sklare 23 November 2019 в 04:28
поделиться
Другие вопросы по тегам:

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