IEnumerator的目的是什么?

Afn*_*hir 0 c#

大家好我搜索IEnumerator但无法理解它.如果有人帮助我,这将是很大的帮助.

基本上试图了解它在这段代码中的作用

string requestUriString = URL;
if (requestUriString.IndexOf("http://", StringComparison.InvariantCultureIgnoreCase) < 0)
{
    requestUriString = "http://" + requestUriString;
}
WebRequest request = WebRequest.Create(requestUriString);
try
{
    IEnumerator enumerator;
    StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.UTF8);
    string sSourceString = reader.ReadToEnd();
    reader.Close();
    string str6 = this.funcParseStringFromString2String(sSourceString, "<div class=\"title\">", "<div class=\"searches_related\">", false);
    ArrayList list = new ArrayList();
    list = this.funcParseStringFromString2Stringx(str6, "<h3><a ", "</h3>", false);
    int num = this.DataGridView2.RowCount + 1;
    try
    {
        enumerator = list.GetEnumerator();
        while (enumerator.MoveNext())
        {
            string str8 = Conversions.ToString(enumerator.Current);
            string str7 = this.funcParseStringFromString2String(str8, "title=\"", "\" href=", false);
            string str5 = this.funcParseStringFromString2String(str8, "\" href=\"", "\">", false).Replace("\" class=\"rated", "");
            this.DataGridView2.Rows.Add(new string[] { Conversions.ToString(num), Conversions.ToString(false), str7, str5 });
            this.lblInsProg.Text = "Done: " + Conversions.ToString(this.DataGridView2.Rows.Count) + " Articles found";
            num++;
        }
    }
    finally
    {
        if (enumerator is IDisposable)
        {
            (enumerator as IDisposable).Dispose();
        }
    }
    if (list.Count == 0)
    {
        this.lblInsProg.Text = "No results found for " + this.search.Text + "!";
        this.Button11.Enabled = false;
    }
    else
    {
        this.Button11.Enabled = true;
    }
    if (this.DataGridView2.RowCount != 0)
    {
        this.Button15.Visible = true;
    }
    return Conversions.ToString(0);
}
catch (WebException exception1)
{
    ProjectData.SetProjectError(exception1);
    WebException exception = exception1;
    ProjectData.ClearProjectError();
}
return Conversions.ToString(0);
Run Code Online (Sandbox Code Playgroud)

dig*_*All 7

这部分代码:

try
{
    enumerator = list.GetEnumerator();
    while (enumerator.MoveNext())
    {
        string str8 = Conversions.ToString(enumerator.Current);
        //...
    }
}
finally
{
    if (enumerator is IDisposable)
    {
        (enumerator as IDisposable).Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

基本相同:

foreach(var value in list)
{
    string str8 = Conversions.ToString(value);
    //...
}
Run Code Online (Sandbox Code Playgroud)

但后者更具可读性,你不觉得吗?