C# 优化.Net顺序代码
以下代码是一组重复20次的指令:C# 优化.Net顺序代码,c#,.net,refactoring,C#,.net,Refactoring,以下代码是一组重复20次的指令: WebBrowserJobs wb1 = new WebBrowserJobs(); Uri uri1 = new Uri("https://www.site1.it"); wb1.Url = uri1; wb1.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); WebBrowserJobs wb2
WebBrowserJobs wb1 = new WebBrowserJobs();
Uri uri1 = new Uri("https://www.site1.it");
wb1.Url = uri1;
wb1.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
WebBrowserJobs wb2 = new WebBrowserJobs();
Uri uri2 = new Uri("https://www.site2.it");
wb2.Url = uri2;
wb2.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
...................
...................
...................
WebBrowserJobs wb20 = new WebBrowserJobs();
Uri uri20 = new Uri("https://www.site20.it");
wb20.Url = uri20;
wb20.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
代码工作正常,但每次我必须添加一个新的网站,以废料,我必须编辑代码
我不知道是否可能(以及如何)基于包含URL列表的简单字符串列表创建一种迭代
重构库可能对这项工作有用吗
谢谢
这应该行得通
这应该有用。你试过了吗
foreach (var str in collection)
{
WebBrowserJobs wb1 = new WebBrowserJobs();
Uri uri1 = new Uri(str);
wb1.Url = uri1;
wb1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
}
你试过了吗
foreach (var str in collection)
{
WebBrowserJobs wb1 = new WebBrowserJobs();
Uri uri1 = new Uri(str);
wb1.Url = uri1;
wb1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
}
如果您需要确保您的
WebBrowserJobs
对象保持在范围内,并且不会被垃圾收集/处置,那么您可以做如下简单的事情。首先是设置作业的方法:
public WebBrowserJobs CreateBroswerJob(string url)
{
var wb = new WebBrowserJobs();
wb.Url = new Uri(url);
wb.DocumentCompleted +=
new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
return wb;
}
你这样称呼它:
//Your list of sites, add to this when necessary
var urls = new List<string>
{
"https://www.site1.it",
"https://www.site2.it",
"https://www.site3.it"
}
var jobs = new List<WebBrowserJobs>();
foreach (var url in urls)
{
jobs.Add(CreateBroswerJob(url));
}
如果您需要确保您的
WebBrowserJobs
对象保持在范围内,并且不会被垃圾收集/处置,那么您可以做如下简单的事情。首先是设置作业的方法:
public WebBrowserJobs CreateBroswerJob(string url)
{
var wb = new WebBrowserJobs();
wb.Url = new Uri(url);
wb.DocumentCompleted +=
new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
return wb;
}
你这样称呼它:
//Your list of sites, add to this when necessary
var urls = new List<string>
{
"https://www.site1.it",
"https://www.site2.it",
"https://www.site3.it"
}
var jobs = new List<WebBrowserJobs>();
foreach (var url in urls)
{
jobs.Add(CreateBroswerJob(url));
}
这是,呃,一种基本的编程。将代码放在一个方法中,并反复调用它,是什么让您感到困惑?您正在寻找的控制机制称为“循环”。你真的应该从一些C#的入门教程开始。循环将被它们中的任何一个所覆盖。这是,呃,一种基本的编程。将代码放在一个方法中,并反复调用它,是什么让您感到困惑?您正在寻找的控制机制称为“循环”。你真的应该从一些C#的入门教程开始。循环将被其中任何一个覆盖。这是假设
wb
超出范围不会导致任何问题。谢谢,我尝试让您知道这是假设wb
超出范围不会导致任何问题。谢谢,我试着让你知道这就像是西蒙的坏版本answer@Raphael如果你要回答一个问题,你需要充分解释。例如,这里什么是collection
?你将如何设置它?你的代码做了什么,而原来的代码没有?有什么问题吗?@DavidG我是新来的,谢谢你的反馈。那就像是西蒙的糟糕版本answer@Raphael如果你要回答一个问题,你需要充分解释。例如,这里什么是collection
?你将如何设置它?你的代码做了什么,而原来的代码没有?有什么问题吗?@DavidG我是新来的,谢谢你的反馈。