代码之家  ›  专栏  ›  技术社区  ›  MickeyfAgain_BeforeExitOfSO

为什么一个空返回可以被测试而另一个抛出异常?

  •  5
  • MickeyfAgain_BeforeExitOfSO  · 技术社区  · 16 年前

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

    XmlAttributeCollection PG_attrColl = SomeNodeorAnother.Attributes;
    

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

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

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

    为什么不同?只是好奇。

    2 回复  |  直到 11 年前
        1
  •  4
  •   Greg    16 年前

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

    这里检查属性是否为null

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

        2
  •  12
  •   user151323 user151323    16 年前

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