C# 1.1 時代,使用委托需顯式聲明委托類型、定義匹配簽名的方法、再將方法與委托關聯。C# 2.0 的匿名方法提供同等功能,卻無需預先創建命名方法。
可將匿名方法視為關聯委托的便捷途徑。對比兩者生成的 IL 代碼,差異極小。編譯器遇到匿名方法時,會在類中自動創建命名方法並關聯委托。因此運行期效能與命名方法幾乎相同,提升的是開發者生產力。
以代碼說明最直觀。下例將匿名方法置於原本放置命名方法的關聯語句中:
#region Simple example - Example1
private delegate void Example1();
private void btnExample1_Click(object sender, EventArgs e)
{
Example1 example = new Example1(delegate()
{
MessageBox.Show("Example1");
});
example();
}
#endregion
這裡 delegate() 後的大括號內即為匿名方法體,完整替代了傳統的方法名稱。