【定义】:委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
//////////////////////////////////////////////////////////////////////
回调函数(CallBack)是WINDOWS编程中的一个重要部分,.NET以委托的形式实现了函数指针的概念,而且它是类型安全的。
我们习惯把数据作为参数传递给方法,而有时某个方法执行的操作并不是针对数据进行的,而是要对另一个方法进行操作,这就比较复杂了,在编译时我们并不知道第二个方法是什么,这个信息只能在运行时得到,所以需要把第二个方法作为参数传递给第一个方法。
在这种情况下我们就要使用委托来解决问题了。
委托的声明:public delegate void MyDelegate(string str);
其中void是返回类型,str是参数。
注:委托并不是方法,它是一种特殊的类型
以下是一个委托的示例:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace InvokeDelegate { public class InvokeDelegate { public static void ConsoleOne(string str) { Console.WriteLine("我喜欢的明星: {0}", str);
}
public static void ConsoleTwo(string str) { Console.WriteLine("我喜欢的明星: {0}", str);
}
public void ConsoleThree(string str) { Console.WriteLine("我喜欢的明星: {0}", str);
}
public class InvokeDelegate1 { public static void P1(string str) { Console.WriteLine("我喜欢的明星: {0}", str); } }
public class InvokeDelegate2 { public void P1(string str) { Console.WriteLine("我喜欢的明星: {0}", str); } }
} }
using System; using System.Collections.Generic; using System.Text;
namespace DelegateStudy { public delegate void MyDelegate(string str); class Program { static void Main(string[] args) { MyDelegate m1 = new MyDelegate(InvokeDelegate.InvokeDelegate.ConsoleOne); m1("权相宇");
MyDelegate m2 = new MyDelegate(InvokeDelegate.InvokeDelegate.ConsoleTwo); m2("宋慧乔");
MyDelegate m3 = new MyDelegate(new InvokeDelegate.InvokeDelegate().ConsoleThree); m3("金喜善");
MyDelegate m4 = new MyDelegate(m3); m4("金在元");
//组合两个委托
MyDelegate m5 = m1 + m2; m5 += m3; m5("李连杰");///m1,m2,m3
//从组合中删除委托m3 MyDelegate m6 = m5 - m3; m6("成龙"); m6 -= m3; m6("成龙");
MyDelegate m7 = new MyDelegate(InvokeDelegate.InvokeDelegate.InvokeDelegate1.P1); m7("Rain");
MyDelegate m8 = new MyDelegate(new InvokeDelegate.InvokeDelegate.InvokeDelegate2().P1); m8("韩佳人"); } } }
ttcloud怎么样?ttcloud是一家海外服务器厂商,运营服务器已经有10年时间,公司注册地址在香港地区,业务范围包括服务器托管,机柜托管,独立服务器等在内的多种服务。我们后台工单支持英文和中文服务。TTcloud最近推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。点击进入:ttcloud官方网站地址TTcloud拥有自...
天上云怎么样?天上云隶属于成都天上云网络科技有限公司,是一家提供云服务器及物理服务器的国人商家,目前商家针对香港物理机在做优惠促销,香港沙田机房采用三网直连,其中电信走CN2,带宽为50Mbps,不限制流量,商家提供IPMI,可以自行管理,随意安装系统,目前E3-1225/16G的套餐低至572元每月,有做大规模业务的朋友可以看看。点击进入:天上云官方网站天上云香港物理机服务器套餐:香港沙田数据中...
轻云互联怎么样?轻云互联,广州轻云网络科技有限公司旗下品牌,2018年5月成立以来,轻云互联以性价比的价格一直为提供个人,中大小型企业/团队云上解决方案。本次轻云互联送上的是美国圣何塞cn2 vps(免费50G集群防御)及香港沙田cn2 vps(免费10G集群防御)促销活动,促销产品均为cn2直连中国大陆线路、采用kvm虚拟技术架构及静态内存。目前,轻云互联推出美国硅谷、圣何塞CN2GIA云服务器...