Оператор C # foreach не может работать с переменными - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь получить значение html-документа по имени тега, но когда я использую foreach, у меня появляется сообщение об ошибке «оператор foreach не может работать с переменными объекта типа, потому что объект не содержит открытого определения для GetEnumerator»

object divs = this.webBrowser1.Document.Body.GetElementsByTagName("div");
                foreach (HtmlElement d in divs)
                {
                    if ((d.GetAttribute("className") == "_3576"))
                    {
                        this.label2.Text = d.InnerText;
                    }

                }

Я пытаюсь использовать ответ в SOLVED ASK следующим образом:

HtmlElement = new divs HtmlElement();

Все еще не работает. Я просто конвертирую код из VB.net в C # Код хорошо работает в VB.net, но получил ошибку на C #.

Оригинальный код VB.net:

 Dim divs = WebBrowser1.Document.Body.GetElementsByTagName("div")
        For Each d As HtmlElement In divs
            If d.GetAttribute("className") = "_3576" Then
                Label5.Text = d.InnerText
            End If
 Next

1 Ответ

0 голосов
/ 30 апреля 2018

Переменная типа object не может быть перечислена, так как она не является коллекцией. Я предполагаю, что оригинальный код VB.NET выглядел примерно так:

Dim divs = Me.WebBrowser1.Document.Body.GetElementsByTagName("divs")

, что означает, что тип переменной выведен (компилятор указывает это для вас).

Эквивалентный код C # будет объявлен как var:

var divs = this.webBrowser1.Document.Body.GetElementsByTagName("divs");

Или вы можете также пропустить вывод и объявить его явно:

HtmlElementCollection divs = this.webBrowser1.Document.Body.GetElementsByTagName("divs");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...