Как проверить "нулевую ссылку на объект" в управляемом 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)
{
}