Как проверить ссылку "NULL object" в Managed С++?

Я натолкнулся на некоторый код MС++ следующим образом:

__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 NULL до доступа к его значению? Я пробовал if(b == NULL), но он не работает.

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

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

Ответ 1

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

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

Однако, если содержимое GetClassB() выглядит следующим образом:

return gcnew ClassB();

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

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

Для проверки нулевого использования:

if (b == nullptr)
{
}