在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C#/ C#匿名方法
C#屬性(Properties)
C#與Java比較
C#方法
C#枚舉
C#關(guān)鍵字
C# StreamReader類(lèi)
C#不安全代碼
C#文件(I/O)
C#匿名方法
C#線(xiàn)程同步
C# Thread類(lèi)
C#主線(xiàn)程
C#數(shù)據(jù)類(lèi)型
C# FileStream類(lèi)
C#預(yù)處理指令
C#繼承
C#循環(huán)
C#決策結(jié)構(gòu)
C#集合
C#反射
C#類(lèi)型轉(zhuǎn)換
C#泛型
C# StringReader類(lèi)
C#歷史
C#運(yùn)算符重載
C#屬性
C#線(xiàn)程實(shí)例:Sleep()方法
C#線(xiàn)程示例:優(yōu)先級(jí)
C#線(xiàn)程實(shí)例:Join()方法
C# BinaryReader類(lèi)
C#類(lèi)
C#索引器
C# BinaryWriter類(lèi)
C#序列化
C#常量和文字
C#程序結(jié)構(gòu)
C#封裝
C#事件
C#可空類(lèi)型(nullable)
C#基本語(yǔ)法
C#異常處理
C#教程
C#接口
C# System.IO命名空間
C#線(xiàn)程命名實(shí)例
C# StringWriter類(lèi)
C#線(xiàn)程實(shí)例
C#數(shù)組
C#正則表達(dá)式
C#命名空間
C#反序列化
C#與C++比較
C# TextWriter類(lèi)
C#多線(xiàn)程
C#字符串
C#是什么?
C#變量
C# FileInfo類(lèi)
C#線(xiàn)程實(shí)例:Abort()方法
C#結(jié)構(gòu)體
C#運(yùn)算符
C#入門(mén)程序
C#多線(xiàn)程生命周期
C# TextReader類(lèi)
C# DirectoryInfo類(lèi)
C#委托

C#匿名方法

前面我們學(xué)習(xí)過(guò),委托可用于引用任何與委托簽名相同的方法。換句話(huà)說(shuō),可以調(diào)用可以由委托使用該委托對(duì)象引用的方法。

匿名方法提供了一種將代碼塊作為委托參數(shù)傳遞的技術(shù)。匿名方法是沒(méi)有名稱(chēng)的方法,只有方法體。

不需要在匿名方法中指定返回類(lèi)型; 它是從方法體中的return語(yǔ)句來(lái)推斷的。

編寫(xiě)匿名方法

使用delegate關(guān)鍵字創(chuàng)建代理實(shí)例時(shí),就可以聲明匿名方法。 例如,

delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
   Console.WriteLine("Anonymous Method: {0}", x);
};

代碼塊Console.WriteLine("Anonymous Method: {0}", x);是匿名方法體。

代理可以使用匿名方法和命名方法以相同的方式調(diào)用,即通過(guò)將方法參數(shù)傳遞給委托對(duì)象。

例如,

nc(10);

示例

以下示例演示如何實(shí)現(xiàn)概念:

using System;

delegate void NumberChanger(int n);
namespace DelegateAppl
{
   class TestDelegate
   {
      static int num = 10;
      public static void AddNum(int p)
      {
         num += p;
         Console.WriteLine("Named Method: {0}", num);
      }

      public static void MultNum(int q)
      {
         num *= q;
         Console.WriteLine("Named Method: {0}", num);
      }

      public static int getNum()
      {
         return num;
      }
      static void Main(string[] args)
      {
         //create delegate instances using anonymous method
         NumberChanger nc = delegate(int x)
         {
            Console.WriteLine("Anonymous Method: {0}", x);
         };

         //calling the delegate using the anonymous method 
         nc(10);

         //instantiating the delegate using the named methods 
         nc =  new NumberChanger(AddNum);

         //calling the delegate using the named methods 
         nc(5);

         //instantiating the delegate using another named methods 
         nc =  new NumberChanger(MultNum);

         //calling the delegate using the named methods 
         nc(2);
         Console.ReadKey();
      }
   }
}

當(dāng)上述代碼被編譯并執(zhí)行時(shí),它產(chǎn)生以下結(jié)果:

Anonymous Method: 10
Named Method: 15
Named Method: 30