Другое событие 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));
}
Это ничего не изменит когда Ваши прогоны программы. Все это необходимо, загружается по требованию. Таким образом, даже если у Вас будет тот оператор использования, если Вы на самом деле не будете использовать тип в том пространстве имен / блок, то блок, к которому коррелируется использование оператора, не будет загружен.
Главным образом, это должно только вымыться для персонального предпочтения.
Не забывайте, что компилятор делает большую работу для оптимизации всего при разрабатывании проекта. Используя это используется в большом количестве места, или 1 не должен делать различного, когда-то скомпилированного.
Оператор 'использования' не влияет на производительность, поскольку это - просто помощник в квалификации названий Ваших идентификаторов. Таким образом вместо того, чтобы иметь необходимость ввести, Система. IO.Path. Объединение (...) , можно просто ввести, Путь. Объединение (...) , если Вы имеете Система использования. IO.
Оператор использования просто мешает Вам квалифицировать типы, которые Вы используете. Мне лично нравится очищать их. Действительно это зависит от того, как метрика местоположения используется
Они просто используются в качестве ярлыка. Например, необходимо было бы записать: Система. Int32 каждый раз, если у Вас не было Системы использования; на вершине.
Удаляющие неиспользованные просто заставляет Ваш код выглядеть более чистым.
Отъезд дополнительного using
директивы прекрасен. Существует немного значения в удалении их, но не очень. Например, это входит в мои списки завершения IntelliSense короче, и поэтому легче перейти.
скомпилированные блоки не затронуты посторонним using
директивы.
Иногда я помещал их в #region
и оставляю свернутым; это делает просмотр файла немного более чистым. IMO, это - одно из нескольких хорошего использования #region
.
Ваше приложение не будет использовать больше памяти. Для компилятора для нахождения классов Вы используете в файлах кода. Это действительно не причиняет боль вне того, чтобы не быть чистым.
У Вас могут быть столкновения имени при вызове классов как (неиспользованные) классы в пространстве имен. В случае Системы. Текст, у Вас будет проблема при определении класса под названием "Кодер".
Так или иначе это обычно - незначительная проблема, и обнаруженный компилятором.
Нет никакой конструкции IL, которая соответствует using
. Таким образом эти using
операторы не увеличивают Вашу память приложения, поскольку нет никакого кода или данных, которые сгенерированы для нее.
Using
используется во время компиляции только в целях разрешить короткие имена типов к полностью определенным именам типов. Таким образом единственный отрицательный эффект, ненужный using
, может иметь, замедляет время компиляции немного и берет немного больше памяти во время компиляции. Я не был бы взволнован по поводу этого все же.
Таким образом, единственный реальный отрицательный эффект наличия using
операторы, в которых Вы не нуждаетесь, находятся на intellisense как список потенциальных соответствий для завершения при вводе увеличений.
Чистота кода важна.
Каждый начинает получать чувство, что код может не сохраняться и на пути browfield, когда каждый видит лишние использования. В сущности, когда я вижу некоторые неиспользованные операторы использования, немного желтого флага повышается позади моего мозга, говоря мне "соблюсти осторожность". И чтение производственного кода никогда не должно давать Вам то чувство.
Так очищают Ваши использования. Не будьте неаккуратны. Внушите доверие. Сделайте свой код симпатичным. Дайте другой dev что тепло-нечеткое чувство.
Там немного причин удаления неиспользованного использования (использований) / пространства имен, помимо кодирования предпочтения:
, Что удаление неиспользованных пространств имен не будет делать:
получающийся блок является тем же с или без неиспользованного удаленного использования (использований).
It’s персональное предпочтение главным образом. Я чищу их сам (Resharper делает хорошее задание сообщения мне когда there’s ненужные операторы использования).
можно было сказать, что это могло бы уменьшить время для компиляции, но с компьютером и скоростями компилятора в эти дни это просто wouldn’t оказывает любое заметное влияние.