为什么可以测试一个null返回但是另一个抛出异常?

时间:2010-05-18 14:50:49

标签: c# xml visual-studio-2008 null

我想测试是否存在xml属性。鉴于此:

XmlAttributeCollection PG_attrColl = SomeNodeorAnother.Attributes;

第一次测试有效:

if (null != PG_attrColl["SomeAttribute"])   

“GetNamedItem”应该返回null,但是下面的测试会抛出一个异常,抱怨它返回的null。

if (null != PG_attrColl.GetNamedItem("SomeAttribute").Value;)

为何与众不同?好奇。

2 个答案:

答案 0 :(得分:12)

因为如果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;
}

答案 1 :(得分:4)

if (null != PG_attrColl["SomeAttribute"])

在这里,您要检查属性是否为空

if (null != PG_attrColl.GetNamedItem("SomeAttribute").Value;)

在这里,您要检查属性的值是否为null。代码首先尝试访问该属性,该属性为null,抛出异常。