匿名方法捕獲的區域變數,壽命超出外部方法範圍。此技術在其他語言稱為 closures,允許委派處理器存取外部方法定義的區域變數(out-of-band 資料),避免委派參數無限膨脹。
外層作用域變數 iTemp、內層 jTemp,匿名方法定義於內層並使用兩者:
public class Program
{
public delegate void MyDelegate();
public static void Main(string[] args)
{
MyDelegate dlg = null;
int iTemp = 100;
if (iTemp > 50)
{
int jTemp = 200;
dlg = delegate
{
Console.WriteLine("iTemp: {0}, jTemp: {1}", iTemp, jTemp);
};
}
dlg();
}
}
public class Program
{
// 外層作用域巢狀類別
private class InnerClassScope1 { public int iTemp; }
// 內層作用域巢狀類別
private class InnerClassScope2
{
public void InstanceMethod()
{
Console.WriteLine("iTemp: {0}, jTemp: {1}",
localObjectScope1.iTemp, jTemp);
}
public InnerClassScope1 localObjectScope1;
public int jTemp;
}
public delegate void MyDelegate();
public static void Main(string[] args)
{
MyDelegate dlg = null;
InnerClassScope1 localObject1 = new InnerClassScope1();
localObject1.iTemp = 100;
if (localObject1.iTemp > 50)
{
InnerClassScope2 localObject2 = new InnerClassScope2();
localObject2.localObjectScope1 = localObject1;
localObject2.jTemp = 200;
dlg = new MyDelegate(localObject2.InstanceMethod);
}
dlg();
}
}

圖示:ILDASM 顯示編譯器自動產生的巢狀類別結構。