C#委托基础1——委托基础

委托和其委托的方法必须具有相同的签名。签名相同:1.参数类型相同 2.参数数量相同 3.返回值一致

例一


  1. class Program  
  2. {  
  3.         public delegate int MathMethod(int x, int y);  
  4.          
  5.         public int Add(int a, int b)  
  6.         {  
  7.             return a + b;  
  8.         }  
  9.  
  10.         static void Main(string[] args)  
  11.         {  
  12.             MathMethod mm;  
  13.             Program p = new Program();  
  14.             mm = p.Add;// 相当于一个方法的容器  
  15.             Console.WriteLine("计算结果为{0}",mm(7,6));  
  16.             Console.ReadLine();  
  17.         }  

例二

 


  1. class Program  
  2. {  
  3.          
  4.         public delegate double MathMethod(double x, double y);  
  5.  
  6.         double Add(double a, double b)  
  7.         {  
  8.             return a + b;  
  9.         }  
  10.  
  11.         double Subtract(double a, double b)  
  12.         {  
  13.             return a + b;  
  14.         }  
  15.  
  16.         double Multiply(double a, double b)  
  17.         {  
  18.             return a * b;  
  19.         }  
  20.  
  21.         double Divide(double a, double b)  
  22.         {  
  23.             return a / b;  
  24.         }  
  25.  
  26.         void DoCalculate(MathMethod mm)  
  27.         {  
  28.             Console.WriteLine("请输入第一个数");  
  29.             double x = Convert.ToDouble(Console.ReadLine());  
  30.  
  31.             Console.WriteLine("请输入第二个数");  
  32.             double y = Convert.ToDouble(Console.ReadLine());  
  33.  
  34.             Console.WriteLine("结果{0}",mm(x, y));  
  35.             Console.ReadLine();  
  36.              
  37.         }  
  38.  
  39.         static void Main(string[] args)  
  40.         {  
  41.             MathMethod mm;  
  42.             Program p = new Program();  
  43.             mm = p.Divide;  
  44.             p.DoCalculate(mm);  
  45.         }  

 

本文参考自金旭亮老师的《.NET 4.0面向对象编程漫谈》有关代理的内容

C#委托基础系列原于2011年2月份发表在我的新浪博客中,现在将其般至本博客。

本文转自IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1070976如需转载请自行联系原作者


woshixuye111

上一篇:【译】Spark-Alchemy:HyperLogLog的使用介绍


下一篇:EMR Spark Relational Cache 利用数据预组织加速查询