为什么一个可以测试空返回,但另一个会抛出异常?

发布于 2024-09-01 20:10:07 字数 375 浏览 2 评论 0原文

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

XmlAttributeCollection PG_attrColl = SomeNodeorAnother.Attributes;

第一个测试有效:

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

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

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

为什么有区别?只是好奇。

I want to test if an xml attribute is present. Given this:

XmlAttributeCollection PG_attrColl = SomeNodeorAnother.Attributes;

This first test works:

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

"GetNamedItem" is supposed to return null, but the following test throws an exception complaining about the null it returns.

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

Why the difference? Just curious.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

要走就滚别墨迹 2024-09-08 20:10:07

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

Because if GetNamedItem has returned null, you can't call for its Value member.

if (null != PG_attrColl["SomeAttribute"])
{
    string value = PG_attrColl.GetNamedItem("SomeAttribute").Value;
}

Or

object someAttributeNullable = PG_attrColl.GetNamedItem("SomeAttribute");
if (null != someAttributeNullable)
{
    string value = someAttributeNullable .Value;
}
橘寄 2024-09-08 20:10:07

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

此处检查属性是否为 null

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

这里您要检查属性的值是否为空。该代码首先尝试访问该属性,该属性为空,引发异常。

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

Here you are checking to see if the Attribute is null

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

Here you are checking to see if the Value of the attribute is null. The code is trying to access the attribute first, which is null, throwing an exception.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文