C# 优化.Net顺序代码

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

以下代码是一组重复20次的指令:

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我是新来的,谢谢你的反馈。