[英]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.