C#委托Delegate

委托类型用于定义一个System.Delegate类派生的类,功能与C++中指向函数的指针功能类似,不过委托既可以指向静态方法也可以指向实例的方法。

它的最大特点是:任何类或对象中的方法都可以通过委托来调用,唯一的要求是方法的参数类型和返回类型必须与委托的参数类型和返回类型一致。

语法形式上委托类似定义一个方法,但是委托没有方法体,因为它执行的方法是在使用委托时才指定的。

1. 委托的定义:

[访问修饰符]  delegate  返回类型  委托名 ([参数序列]);

<span style="font-family:Microsoft YaHei;">public delegate double MyFuction(double x);</span>

2. 通过委托调用方法:

可将方法作为实体赋值给变量,也可将方法作为委托的参数来传递。下面将方法作为参数:

<span style="font-family:Verdana;">public static double[] Apply(double[] a, MyFunction f)
{
     double[] result = new double[a.Length];
     for (int i = 0; i < a.Length; i++)
     {
         result[i] = f(a[i]);
     }
     return result;
}
</span>

定义一些方法:

<span style="font-family:Verdana;">public static double Square(double x)
{
       return x * x;
}

//另一个类

class D1
    {
        double y;
        public D2(double y)
        {
            this.y = y;
        }
        public double Multiply(double x)
        {
            return x * y;
        }
    }
 
//具体使用

double[] a = {0.0,0.5,1.0};
double[] squares = Apply(a,Square);

D1 d = new D1(2.0);
double[] doubles = Apply(a,d.Multiply);
</span>
 
  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值