C#委托介绍与简单示例

作者:袖梨 2022-06-25

C#委托介绍

托和事件在.NET Framework[1] 中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易

C#演示委托的简单用法

例子,一个演示委托的代码,最后给出结果。

 代码如下 复制代码

using System;
namespace Example.Dele
{
 class Operations
 {
  public static double MulTwo(double value)
  {
   return value * 2;
  }
  public static double Square(double value)
  {
   return value * value;
  }
 }
 delegate double DoubleOp(double x);
 class Dele
 {
  static void Main()
  {
   DoubleOp[] op =
    {
     new DoubleOp(Operations.MulTwo),
     new DoubleOp(Operations.Square)
    };
   for( int i = 0; i < op.Length; i++ )
   {
    Console.WriteLine("使用第{0}个操作", i);
    Display(op[i], 1.5);
    Display(op[i], 3.14);
    Display(op[i], 10);
    Console.WriteLine();
   }
  }
  static void Display(DoubleOp action, double value)
  {
   double result = action(value);
   Console.WriteLine("{0}的运算结果是{1}", value, result);
  }
 }
}

C#委托的好处

某人有三子,让他们各自带一样东西出门,并带回一头猎物。
可以理解为一种父亲对儿子的委托:
猎物 办法(工具 某工具)
三个人执行委托的方法各不相同
兔子 打猎(工具 弓)
野鸡 买(工具 钱)
狼 诱捕(工具 陷阱)
委托是一个类型,用来指称所有形式相同的方法(返回值类型相同而且参数也相同)。
public delegate double Handler(double[] ds);
public double Sum(double[] ds) {//在方法中执行操作。}
public double Average(double[] ds) {//在方法中执行操作。}
委托的实例化
用new关键字(将方法名作为参数)生成一个委托对象,建立委托与方法的关联。
例:Handler handler = new Handler(Sum);使用委托可以像使用变量一样使用委托的实例。使用委托时,需要给委托按要求传递参数。
使用委托,则委托所关联的方法被调用。
例:double[] weights={1.0,2.0,3.0,4.0};
double result=handler(weights);
一个委托可以通过+运算委托关联多个方法,叫多路广播委托(对应于单路广播委托)。
如果此时使用委托,则所有的关联方法都被调用。
例:Handler handler = new Handler(Sum);
handler += new Handler(Average);
这个委托(第三方)就会去调用方法去帮你实现
委托的好处:
1.相当于用方法作为另一方法参数(类似于C的函数指针)
2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托

相关文章

精彩推荐