程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C# 2.0的Specification(匿名方法)(一)(4)

C# 2.0的Specification(匿名方法)(一)(4)

編輯:關於C語言

21.5外部變量

作用域包含匿名方法表達式的任何局部變量、值參數和參數數組,都被稱為匿名方法表達式的外部變量。在類的實例函數成員中,this值被認為是一個值參數,它也是包含在函數成員內的任何匿名方法表達式的外部變量

21.5.1捕獲外部變量

當外部變量通過匿名方法而被引用時,就可以說這個外部變量被匿名方法所捕獲(captured)了。通常,局部變量的生存期被限制為它所關聯的程序塊或語句的執行區(§5.1.7)。但被捕獲的外部變量的生存期將至少被延長,直到引用匿名方法的委托可以被垃圾回收時為止。

示例

using System;
  
delegate int D();
  
class Test
{
   static D F() {
      int x = 0;
      D result = delegate { return ++x; }
      return result;
   }
  
   static void Main() {
      D d = F();
      Console.WriteLine(d());
      Console.WriteLine(d());
      Console.WriteLine(d());
   }
}

局部變量x被匿名方法所捕獲,並且x的生存期至少被延長,直到從F中返回的委托可以被垃圾回收為止(在這裡,這一點直到程序結束才滿足),既然匿名方法的每次調用都在x的相同實例上進行操作,該示例輸出的結果為:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved