美文网首页
C# delegate

C# delegate

作者: Tommmmm | 来源:发表于2018-05-24 10:36 被阅读0次

    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

    相关文章

      网友评论

          本文标题:C# delegate

          本文链接:https://www.haomeiwen.com/subject/tpmjjftx.html