委托

本文介绍了 C# 中委托的基本概念及其使用方法。通过示例展示了如何定义委托、实现方法并实例化委托来调用这些方法。委托类似于 C 和 C++ 的函数指针,但具备面向对象特性。

     委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的调用可以像其他方法一样具有参数和返回值。它是一种安全 的封装方法的类型,于C和C++中的函数指针类似。但是与C中的函数指针不同,委托是面向对象的,类型安全的和保险的。使用委托,需要先创建一个委托,并 对他进行一个或多个实例化,下面的实例演示了如何使用委托。

   // 声明一个委托
public delegate void Del (string message );

class test
{
    // 方法的参数类型和返回类型要与委托中定义的类型完全一致
    public static void DelegateMethod (string message )
    {
        Console . WriteLine (message );
    }

    static void Main ()
    {
        // 使用委托
        Del handler = DelegateMethod ;
        handler ("Hello world" );

        Console . ReadKey ();
    }
}

     注意到上面的代码中,委托定义的方法返回值为void,参数为string类型。test类中的方法的返回值和参数类型是一致的。事实上,定义一个委托是 指定义一个新类,委托实现为派生自基类System.MulticastDelegate类

  1. 首先创建一个委托
  2. 实现一个方法,方法的返回值和参数类型与委托一致
  3. 实例化委托,并传入参数获得结果

    委托示例:

// 声明委托
public delegate double Op (double value );

// 两个简单的数学方法
class MathOperations
{
    public double MulByTwo (double x )
    {
        return x * 2 ;
    }
    public double Square (double x )
    {
        return x * x ;
    }
}

class Test
{
    static void Main ()
    {
        MathOperations mo = new MathOperations ();
        // 实现委托
        Op op1 = mo . MulByTwo ;
        Op op2 = mo . Square ;

        Console . WriteLine ("3 Multipy By Two = {0}" , op1 (3 ));
        Console . WriteLine ("3 Squares = {0}" , op2 (3 ));

        Console . ReadKey ();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值