我有一个 for 循环和四个网络浏览器。他们叫:
- 网页1
- Web2
- Web3
- 网络4
我有一个 for 循环:
for (int i = 1; i <= 4; i++)
我想编写一次代码,并让它在所有四个浏览器上执行。我以为是这样的:
web[i.toString()]
然而,输出:
The name "web" does not exist in the current context
我该怎么做?
使用数组
var webBrowsers = new[] { Web1, Web2, Web3, Web4 };
for(int i = 0; i < webBrowsers.Length; i++)
{
webBrowsers[i]... // Do something with each
}
通常,只要您有带有序列名称的变量(例如Web1
.. Web4
),这很好地表明您可能应该使用数组来代替。就个人而言,我会重构代码,以便您删除对各个webBrowser
控件的所有引用,并专门使用数组。但是,这可能超出了这个问题的范围。
延伸阅读:
您需要按名称恢复控件,而不是静态地,而是动态地:
var matches = this.Controls.Find(string.Format("Web{0}", i), true);
// this means you can't find that control
if (matches.Length == 0) { continue; }
// now you can cast the first control if you'd like
var web = matches[0] as WebBrowser;