C#foreach语句不能对变量进行操作

时间:2018-04-30 15:14:02

标签: c# variables

我试图通过标签名称获取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;
                    }

                }

我试图像这样使用求助的答案:

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 :(得分:4)

无法枚举// in your state in your constructor add matchId and matchIdChanged then static getDerivedStateFromProps(nextProps, prevState) { if (nextProps.matchId !== prevState.matchId) { return { matchIdChanged: true, matchId: nextProps.matchId } } return null; } componentDidUpdate() { if (this.state.matchIdChanged) { fetch(matchAPI + this.props.matchId) .then((matchResponse) => matchResponse.json()) .then((matchfindresponse) => { console.log(matchfindresponse); this.setState({ matchData:matchfindresponse, testTeam:matchfindresponse.team1.name, matchIdChanged: false // add this }) }) } } 类型的变量,因为它不是一个集合。我的猜测是原始的VB.NET代码看起来像这样:

object

表示变量的类型是推断(编译器为您指定)。

等效的C#代码将其声明为Dim divs = Me.WebBrowser1.Document.Body.GetElementsByTagName("divs")

var

或者您也可以跳过推断并明确声明:

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