Другое событие 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));
}
Это , C++ / CLI и каре являются управляемым эквивалентом * (указатель), который в C++ / терминология CLI называют 'дескриптор' к 'ссылочному типу' (так как у Вас могут все еще быть неуправляемые указатели).
(Благодаря Муравьеду для указания на лучшую терминологию.)
Это означает, что это - ссылка на управляемый объект по сравнению с обычным указателем C++. Объектами позади таких ссылок управляет время выполнения и можно переместить в памяти. Они также собраны "мусор" автоматически.
При выделении управляемой памяти та память может быть перемещена сборщиком "мусора". ^ оператор является указателем для управляемой памяти, которая продолжает указывать на корректный место, даже если сборщик "мусора" перемещает объект, на который это указывает.
Из MSDN похоже, что каре означает, что Вы получаете дескриптор к создаваемому типу.
В C++ / CLI это означает управляемый указатель. Можно читать больше об этом (и другой C++ / функции CLI) здесь:
Это означает, что это - ссылка на управляемый объект.