簡體   English   中英

類型名稱是“ _Closure $ __ 1”是什么意思?

[英]What does it mean when a Type name is “_Closure$__1”?

我有一種方法用於在程序集中輸出所有類名:

private static void ListClasses()
{
    var assembly = Assembly.LoadFile(@"path\to\my.dll");
    Type[] types = assembly.GetTypes().Where(t => t.IsClass).ToArray();

    using (StreamWriter w = File.AppendText("log.txt"))
    {
        foreach (var type in types)
        {
            w.WriteLine(type.Namespace + "," + type.Name);
            w.Flush();
        }

        w.Close();
    }

    Console.WriteLine("Done");
}

我看到的唯一問題是某些類名稱具有以下輸出:

The.Namespace,_Closure$__1

每當需要以這種方式輸出類型名稱時,最后一個數字將遞增。 任何人都可以闡明這意味着什么嗎?

這些是由lambda表達式使用的編譯器生成的類,用於捕獲lambda表達式中的自由變量。

http://msdn.microsoft.com/zh-cn/library/bb981314%28v=vs.80%29.aspx

閉包是指局部變量超出其范圍而持續存在的情況。 例如:

public IEnumerable<Employee> GetEmployees(string lastName)
{
    return employees.Where(e => e.LastName == lastName);
}

編譯此代碼將導致關閉,在此位置, lastName將在幕后保持其值,直到對Where求值為止。

有關更多信息: http : //en.wikipedia.org/wiki/Closure_(computer_science

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM