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

C# 2.0的Specification(匿名方法)(二)(3)

編輯:關於C語言

21.10實現例子

本節以標准C#的構件形式描述匿名方法的可能實現。在這裡描述的實現基於Microsoft C#編譯器所采用的相同原則,但它決不是強制性的或唯一可能的實現。

本節的後面部分給出了幾個示例代碼,它包含了具有不同特性的匿名方法。對於每個例子,我們將提供使用唯一標准C#構件的代碼的對應轉換。在這些例子中,標識符D假定表示如下委托類型。

public delegate void D();

匿名方法的最簡形式就是沒有捕獲外部變量的那個。

class Test
{
   static void F() {
     D d = delegate { Console.WriteLine("test"); };
   }
}

這段代碼可被轉換到一個引用編譯器生成的靜態方法的委托實例,而匿名方法的代碼將會放入到該靜態方法中。、

class Test
{
  static void F() {
    D d = new D(__Method1);
  }
  
  static void __Method1() {
    Console.WriteLine("test");
  }
}

在下面的示例中,匿名方法引用this的實例成員。

class Test
{
  int x;
  
  void F() {
    D d = delegate { Console.WriteLine(x); };
  }
}

this可以被轉換到由編譯器生成的包含匿名方法代碼的實例方法。

class Test
{
  int x;
  
  void F() {
    D d = new D(__Method1);
  }
  
  void __Method1() {
    Console.WriteLine(x);
  }
}

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