C# delegate

2018-05-24  本文已影响0人  Tommmmm

C# 中的 Delegate 类似于 C++ 中函数的指针
所有的委托Delegate都派生自 System.Delegate 类。

委托的声明:

public delegate double Calculation(int x, int y);

实例化一个委托:

Calculation myCalculation = new Calculation(myMath.Average);

委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。
这里与Average方法相关

使用委托对象调用方法:

double result = myCalculation(10, 20);

结果为:15

delegate的应用:

class PrintString
   {
      static FileStream fs;
      static StreamWriter sw;


      // 委托声明
      public delegate void printString(string s);


      // 打印到控制台
      public static void WriteToScreen(string str)
      {
         Console.WriteLine("The String is: {0}", str);
      }


      // 打印到文件
      public static void WriteToFile(string s)
      {
         fs = new FileStream("c:\\message.txt",
         FileMode.Append, FileAccess.Write);
         sw = new StreamWriter(fs);
         sw.WriteLine(s);
         sw.Flush();
         sw.Close();
         fs.Close();
      }


      // 该方法把委托作为参数,并使用它调用方法
      public static void sendString(printString ps)
      {
         ps("Hello World");
      }


      static void Main(string[] args)
      {
         printString ps1 = new printString(WriteToScreen);
         printString ps2 = new printString(WriteToFile);
         sendString(ps1);
         sendString(ps2);
         Console.ReadKey();
      }
   }

sendString(ps1)会在控制台上打印出:The String is: Hello World

上一篇下一篇

猜你喜欢

热点阅读