Как проверить "нулевую ссылку на объект" в управляемом c++?

я сталкиваюсь с некоторым кодом MC++, как это:

__gc class ClassA
{
Puclic:
     ClassB GetClassB();
}

__gc class ClassB
{
 Public:
    int Value;
}

int main()
{
    ClassA^ a = gcnew ClassA();
    ClassB^ b = a->GetClassB();

    int c = b->Value;
}

разве не важно проверить, является ли b нулевым перед доступом к его значению? Я пытался!--1-->, но это не работает.

или это действительно не нужно делать проверку? однако я не могу в это поверить...

PS: Я только хочу знать, может ли сама "ссылка" быть нулевой здесь. Не важно, является ли содержимое класса B нулевым.

1 ответов


эта программа является синтаксически и семантически правильной, насколько я могу судить.

ссылка может быть null там, в зависимости от реализации GetClassB(). Таким образом, технически, там может быть нулевая ссылка, ожидающая там.

однако, если содержимое GetClassB() выглядит так:

return gcnew ClassB();

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

Итак, реальный ответ: это зависит, но вы никогда не требуются для проверки на null.

для проверки использования null:

if (b == nullptr)
{
}