【问题标题】:Why am I getting a NullReferenceException with this code? [duplicate]为什么我收到此代码的 NullReferenceException? [复制]
【发布时间】:2014-08-30 12:29:16
【问题描述】:

我的程序中有这段代码:

foreach (HtmlElement chat in wb.Document.GetElementsByTagName("input"))
{
    if (chat != null)
    {
        if (chat.InnerText.Equals("Chat"))
        {
            chat.InvokeMember("Click");
            loggedIn = true;
            break;
        }
    }
}

一旦到达if(chat.InnerText.Equals("Chat")),它就会抛出一个 NullReferenceException 错误,如下面的屏幕截图所示:

有人知道它为什么给我这个吗?我什至把if (chat != null) 代码放在那里,它仍然会抛出它。

这是网站代码:

<div class="ContentTab">
    Chat
</div>

【问题讨论】:

  • chat 不为空,但chat.InnerText 为空。
  • 聊天可能是一个自动关闭标签,然后没有内部文本。不知道:D
  • 在这种情况下使用Equals() 看起来像Java 主义。请改用相等运算符,因此您最终不会在 null 引用上调用方法。

标签: c# winforms browser nullreferenceexception


【解决方案1】:

Chat.InnerText 为空,即使 Chat 不是。试试这个:

foreach (HtmlElement chat in wb.Document.GetElementsByTagName("input"))
{
        if (chat != null && chat.InnerText != null && chat.InnerText.Equals("Chat"))
        {
            chat.InvokeMember("Click");
            loggedIn = true;
            break;
        }
}

【讨论】:

  • 试试...谢谢
  • 无效...这是网站代码:&lt;div class="ContentTab"&gt;Chat&lt;/div&gt; 你知道怎么点击吗?因为该代码不起作用。
  • 你还有空引用异常吗?
  • 不,我没有收到错误,但它没有点击...
  • 所以它确实解决了您询问的问题。你现在遇到了一个不同的问题......它没有点击,因为 InnerText 是 null 所以它不会失败 if 条件
【解决方案2】:

您可以尝试检查对象本身是否为空 试试这个

foreach (HtmlElement chat in wb.Document.GetElementsByTagName("input"))
{
    if (chat != null && (!chat.isEmpty())&& chat!="")
    {
        if (chat.InnerText.Equals("Chat"))
        {
            chat.InvokeMember("Click");
            loggedIn = true;
            break;
        }
    }
}

【讨论】:

    【解决方案3】:

    试试

        if (chat.InnerText == "Chat")
        {
            chat.InvokeMember("Click");
            loggedIn = true;
            break;
        }
    

    我相信 .Equals 检查对象相似性,而 operator == 检查引用相等性。

    【讨论】:

    • 字符串是一种特殊情况。 == 按值而不是按引用比较它们,即使它们是引用类型。
    【解决方案4】:

    chat 变量的属性InnerText 为空

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多