c#-委托

原创 2015年07月07日 18:01:25
c#委托
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
委托就是相当于c++中的指针。
总的来说委托就是方法里面还有方法!

步骤:1.定义一个委托,类型和参数;
            2.用于委托的方法,类型和参数与委托保持一致;
            3.调用委托;
实例一:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace delegateDemo
{
    public delegate void callDelegate(int a, int b);


    class Program
    {
        //定义一个委托
       


        private static void big(int a, int b)
        {
            if (a > b)
                Console.WriteLine("a"+a);
            else
                Console.WriteLine("a"+b);
        }


        private static void small(int a, int b)
        {
            if (a < b)
                Console.WriteLine(a);
            else
                Console.WriteLine(b);
        }


        //在函数内使用委托
        private static void Process(int a, int b, callDelegate call)
        {
            call(a, b);
        }
        static void Main(string[] args)
        {
            //委托实例与方法相关联
            Process(10, 20,big);
            Process(10, 20,small);
            Console.ReadKey();
            
        }
    }
}

实例二:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace delegateDemo
{
    public class ab
    {
        //用于委托调用的方法
        public int Big(int a, int b)
        {
            if (a > b)
                return a;
            else
                return b;
        }
        public int Small(int a, int b)
        {
            if (a < b)
                return a;
            else
                return b;
        }
    }
    class Program
    {
        //定义一个委托
        public delegate int callDelegate( int a, int b);

        //在函数内使用委托
        public static int Process( int a, int b, callDelegate call)
        {
            return call(a, b);
        }
        static void Main(string[] args)
        {
            //委托实例与方法相关联
             callDelegate delegateBig=new callDelegate( new ab().Big);
             int big = delegateBig(10, 20);

            //用委托调用相关联的方法
             int small = Process(10, 20, new callDelegate( new ab ().Small));
             Console.WriteLine(big);
             Console.WriteLine(small);
        }
    }
}


C#- 委托

委托就好像函数的指针,1.首先声明一个全局变量的委托 2.接着实例化一个委托对象,并使他指向一个方法 3.最后 调用该委托对象等同于调用该方法。   使用+=是增加委托调用的方法,使用-=是减少委托...
  • cxeye
  • cxeye
  • 2012年11月11日 14:02
  • 337

C#-委托(delegate)

对学过c/c++的来说,delegate就相当于函数指针,看下面的代码:class Person {     public Person(string name)     {         this...
  • fdnike
  • fdnike
  • 2007年06月08日 10:27
  • 596

C#-初识委托

1、委托是C#一个比较好的设计,委托后,能将C#中的方法作为参数传递到函数中去,在我们的生活中,有时我们需要在某个特定的时间去执行某些任务,例如去学校骑自行车去,乘汽车。有时我们我们只需要写两个方法来...
  • u013766436
  • u013766436
  • 2015年09月16日 00:21
  • 293

C#-委托与事件

/* 委托示例。 */ using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
  • LY_624
  • LY_624
  • 2016年04月09日 11:41
  • 153

C#-委托和事件

委托: C#中一切都是对象,整数可以用整数变量指向它,对象可以用对象变量指向它,函数也可以用委托变量指向它。 声明委托的方式:delegate 返回值类型 委托类型名(参数) 比...
  • alayeshi
  • alayeshi
  • 2014年11月18日 16:00
  • 475

C#-—体验委托

/**烟台大学计算机学院学生 *All right reserved. *文件名称:C#-—体验委托 *作者:杨飞 *...
  • u012370105
  • u012370105
  • 2014年10月14日 16:38
  • 397

C#-委托(delegate)

参考资料《C#技术揭密》 http://www.microsoft.com/china/msdn/events/featureevents/default.mspx  这里有一些微软.net编程的视频...
  • zwyl2001
  • zwyl2001
  • 2005年02月17日 16:57
  • 663

天天学C#-委托(delegate)

参考资料《C#技术揭密》 http://www.microsoft.com/china/msdn/events/featureevents/default.mspx  这里有一些微软.net编程的视频...
  • sweetch
  • sweetch
  • 2004年12月18日 21:17
  • 596

天天学C#-委托(delegate)

参考资料《C#技术揭密》 http://www.microsoft.com/china/msdn/events/featureevents/default.mspx  这里有一些微软.net编程的视频...
  • ClampHammer
  • ClampHammer
  • 2004年11月21日 20:04
  • 1063

C#使用委托实现主窗体向子窗体发送消息

/* * 【1】申明委托(定义一个函数原型:返回值,参数类型和个数) * 【2】根据委托,定义一个目标方法(目标方法可以有多个),注意目标方法和委托的返回值以及参数类型个数必须保持一致 *...
  • wuguanghao
  • wuguanghao
  • 2017年05月12日 07:43
  • 674
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#-委托
举报原因:
原因补充:

(最多只允许输入30个字)