为什么我用这段代码得到NullReferenceException?

时间:2014-07-09 12:58:08

标签: c# winforms browser nullreferenceexception

我的程序中有这段代码:

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错误,如下面的ScreenShot所示:

Error Code

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

这是网站代码:

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

InnerText变量的属性chat为空

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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;
        }
    }
}