简单理解委托

        委托是什么?在C#的视频中,楚广明老师说委托可以看成是一种数据类型,可以用于定义变量,但它是一种特殊的数据类型,它所定义的变量能接受的数值只能是一个函数。楚老师指出,委托更确切的说是一个能接受函数的一个变量,类似于C++的指针。

        我没有学过C++,不知道C++的指针到底该怎么用,又有什么功能。所以,对于楚广明老师说的这些我是真的有点不明白,后来我看到这样几个例子:

        例子一:这是两个数相加的例子。
class Program
    {
        static void Main(string[] args)
        {
            MathOpt myopt = new MathOpt();       //类实例化
            int Result=myopt.Add(1, 2);
            Console.WriteLine("其值是:" + Result );  //输出结果为3.
        }
    }
    public class MathOpt   //定义类
    {
        public int Add(int number1, int number2)   //方法
        {
            return number1 + number2;
        }
    }
例子二:这是上一个例子的应用,它用了委托。
 public delegate int  MathOptDelegate (int value1,int value2);   //声明一个委托
    class Program
    {
        static void Main(string[] args)
        {
            MathOpt myopt=new MathOpt ();     //实例化MathOpt类
            MathOptDelegate oppDel;         //声明委托类型变量
            oppDel =myopt .Add ;           //给委托类型变量赋值,即把方法名赋给委托类型变量
            int Result= oppDel (1,2);
            Console.WriteLine("值是:" + Result);    //输出结果为3.
        }
    }
    public class MathOpt   //定义一个类
    {
        public int Add(int number1, int number2)    //方法
        {
            return number1 + number2;
        }
    }
例子三:这可以当做是委托的一个作用体现吧。
  public delegate int MathOptDelegate(int value1, int value2);   //定义委托
    class Program
    {  
        static void Main(string[] args)
        {
            Console.WriteLine(PrintResult(MathOpt.Add, 6, 4));  //输出结果为10.
            Console.WriteLine(PrintResult(MathOpt.sub, 6, 4));  //输出结果为2.
        }

        public static int PrintResult(MathOptDelegate action, int a, int b)
        {
            int result = action(a, b);  //MathOptDelegate action是一个委托数据类型,可以放一个函数在里面,action是通过委托将a、b的值传过去,进行运算。
            return result;
        }
    }
    public class MathOpt
    {
        public static int Add(int arg1, int arg2)
        {
            return arg1 + arg2;
        }
        public static int sub(int arg1, int arg2)
        {
            return arg1 - arg2;
        }
    }
前两个例子,让我知道委托该这么用,知道它的一个大概原理过程,但对于例子三,我发现我还是对委托的作用有点想不明白,我们为什么要用委托啊,不用委托,用别的方式实现不行吗?呵呵,还在进一步思考中~~~~~~



       



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值