Что делает каре (‘^ ’), означают в C++ / CLI?

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

199
задан Community 23 May 2017 в 01:54
поделиться

6 ответов

Это , C++ / CLI и каре являются управляемым эквивалентом * (указатель), который в C++ / терминология CLI называют 'дескриптор' к 'ссылочному типу' (так как у Вас могут все еще быть неуправляемые указатели).

(Благодаря Муравьеду для указания на лучшую терминологию.)

167
ответ дан ProfNandaa 23 November 2019 в 05:10
поделиться

Это означает, что это - ссылка на управляемый объект по сравнению с обычным указателем C++. Объектами позади таких ссылок управляет время выполнения и можно переместить в памяти. Они также собраны "мусор" автоматически.

19
ответ дан Franci Penov 23 November 2019 в 05:10
поделиться

При выделении управляемой памяти та память может быть перемещена сборщиком "мусора". ^ оператор является указателем для управляемой памяти, которая продолжает указывать на корректный место, даже если сборщик "мусора" перемещает объект, на который это указывает.

16
ответ дан Joel Coehoorn 23 November 2019 в 05:10
поделиться

Из MSDN похоже, что каре означает, что Вы получаете дескриптор к создаваемому типу.

https://web.archive.org/web/20150117095313/http://msdn.microsoft.com/en-us/library/te3ecsc8%28VS.80%29.aspx

4
ответ дан Anssssss 23 November 2019 в 05:10
поделиться

В C++ / CLI это означает управляемый указатель. Можно читать больше об этом (и другой C++ / функции CLI) здесь:

http://en.wikipedia.org/wiki/C%2B%2B/CLI

3
ответ дан Mark Ingram 23 November 2019 в 05:10
поделиться

Это означает, что это - ссылка на управляемый объект.

2
ответ дан 1800 INFORMATION 23 November 2019 в 05:10
поделиться
Другие вопросы по тегам:

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