C++.NET null reference
От: StepLg Россия  
Дата: 13.05.07 15:53
Оценка:
как проверить какую-то ссылку на null?
к примеру, XmlNode::SelectSingleNode может возвратить null reference, если указанный узел не найден. Как это отловить?

(извиняюсь заранее, за ламерский вопрос. уже пол часа ищу — не могу найти)

*кросс-пост с http://sql.ru/forum/actualthread.aspx?tid=428424*
Re: C++.NET null reference
От: mrozov  
Дата: 13.05.07 16:21
Оценка:
Здравствуйте, StepLg, Вы писали:

SL>как проверить какую-то ссылку на null?

SL>к примеру, XmlNode::SelectSingleNode может возвратить null reference, если указанный узел не найден. Как это отловить?

SL>(извиняюсь заранее, за ламерский вопрос. уже пол часа ищу — не могу найти)


SL>*кросс-пост с http://sql.ru/forum/actualthread.aspx?tid=428424*


Я не совсем понял, что ты имеешь ввиду. Но разве запустить программу под отладчиком и посмотреть — не самое простое решение (всяко проще, чем полчаса искать)?
Re[2]: C++.NET null reference
От: StepLg Россия  
Дата: 13.05.07 16:37
Оценка:
Здравствуйте, mrozov, Вы писали:

M>Здравствуйте, StepLg, Вы писали:


SL>>как проверить какую-то ссылку на null?

SL>>к примеру, XmlNode::SelectSingleNode может возвратить null reference, если указанный узел не найден. Как это отловить?

SL>>(извиняюсь заранее, за ламерский вопрос. уже пол часа ищу — не могу найти)


SL>>*кросс-пост с http://sql.ru/forum/actualthread.aspx?tid=428424*


M>Я не совсем понял, что ты имеешь ввиду. Но разве запустить программу под отладчиком и посмотреть — не самое простое решение (всяко проще, чем полчаса искать)?



да нет... мне нужно как-то сравнить результат (в if), так чтобы если есть значение — одна ветвь. если нет значения (эта самая null reference) — то другая ветвь программы. я, собственно, не знаю как и с чем сравнивать
Re[3]: C++.NET null reference
От: Mab Россия http://shade.msu.ru/~mab
Дата: 13.05.07 17:48
Оценка:
Здравствуйте, StepLg, Вы писали:

Язык-то какой? MC++ или CLI/C++?
Re: C++.NET null reference
От: MAPCUAHUH  
Дата: 13.05.07 18:16
Оценка: -2
Здравствуйте, StepLg, Вы писали:

SL>как проверить какую-то ссылку на null?

SL>к примеру, XmlNode::SelectSingleNode может возвратить null reference, если указанный узел не найден. Как это отловить?

SL>(извиняюсь заранее, за ламерский вопрос. уже пол часа ищу — не могу найти)


SL>*кросс-пост с http://sql.ru/forum/actualthread.aspx?tid=428424*



if(ref==nul)
{
  //do if null
}
else
{
// do if not nul

}


Это?
Re[4]: C++.NET null reference
От: Аноним  
Дата: 13.05.07 18:47
Оценка:
Здравствуйте, Mab, Вы писали:

Mab>Язык-то какой? MC++ или CLI/C++?


А разве это не одно и то же?
Re: C++.NET null reference
От: BOleg Россия  
Дата: 13.05.07 19:01
Оценка:
Здравствуйте, StepLg, Вы писали:

SL>как проверить какую-то ссылку на null?


Если C++/CLI (Visual Studio 2005), то так:
Object^ ptr;
if(ptr==nullptr)
{
}

или просто
Object^ ptr;
if(ptr)
{
}


В MC++ не помню.
В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.
Re[5]: C++.NET null reference
От: Mab Россия http://shade.msu.ru/~mab
Дата: 13.05.07 20:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А разве это не одно и то же?

Гм.
Re[2]: C++.NET null reference
От: Mab Россия http://shade.msu.ru/~mab
Дата: 13.05.07 20:01
Оценка:
Здравствуйте, BOleg, Вы писали:

BO>В MC++ не помню.

NULL (т.е. попросту 0)
Re: C++.NET null reference
От: Svjat Украина  
Дата: 14.05.07 09:41
Оценка:
Здравствуйте, StepLg, Вы писали:

SL>как проверить какую-то ссылку на null?

SL>к примеру, XmlNode::SelectSingleNode может возвратить null reference, если указанный узел не найден. Как это отловить?

SL>(извиняюсь заранее, за ламерский вопрос. уже пол часа ищу — не могу найти)


SL>*кросс-пост с http://sql.ru/forum/actualthread.aspx?tid=428424*


ну если if( obj == null ){} else{} не подходит, то
try
{
   //
}
catch( NullReferenceException ex )
{
   //
}
Re: C++.NET null reference
От: _Morpheus_  
Дата: 14.05.07 09:46
Оценка:
Здравствуйте, StepLg, Вы писали:

SL>как проверить какую-то ссылку на null?

SL>к примеру, XmlNode::SelectSingleNode может возвратить null reference, если указанный узел не найден. Как это отловить?

для managed объектов так:
if(node == nullptr)
...


для обычных, как и раньше:
if(obj == NULL)
...
... << RSDN@Home 1.2.0 alpha rev. 676>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.