Я хочу протестировать, если атрибут XML присутствует. Учитывая это:
XmlAttributeCollection PG_attrColl = SomeNodeorAnother.Attributes;
Этот первый тест работы:
if (null != PG_attrColl["SomeAttribute"])
"GetNamedItem", как предполагается, возвращает пустой указатель, но следующий тест выдает исключение, жалующееся на пустой указатель, который это возвращает.
if (null != PG_attrColl.GetNamedItem("SomeAttribute").Value;)
Почему различие? Просто любопытный.
if (null! = PG_attrColl ["SomeAttribute"])
Здесь вы проверяете, равен ли атрибут null
if (null! = PG_attrColl.GetNamedItem ("SomeAttribute ") .Value;)
Здесь вы проверяете, является ли значение атрибута нулевым. Код сначала пытается получить доступ к атрибуту, который имеет значение null, вызывая исключение.
Потому что если GetNamedItem
вернул null, вы не можете вызвать его Value
член.
if (null != PG_attrColl["SomeAttribute"])
{
string value = PG_attrColl.GetNamedItem("SomeAttribute").Value;
}
Или
object someAttributeNullable = PG_attrColl.GetNamedItem("SomeAttribute");
if (null != someAttributeNullable)
{
string value = someAttributeNullable .Value;
}