一、C#委托的概念
C#中的委托相当于C++中的函数指针(如果之前学过C++就知道函数指针是个什么概念的了),函数指针是用指针获取一个函数的入口地址,然后通过这个指针来实现对函数的操作。
C#中的委托相当于C++中的函数指针,也就说两者是有区别的:委托是面向对象的,类型安全的,是引用类型(开始就说了委托是个类),所以在使用委托时首先要定义→声明→实例化→作为参数传递给方法→使用委托。
委托是一种特殊的对象类型,其特殊之处在于,我们以前定义的所有对象都包含数据,而委托只包含方法的细节。在.net中方法不允许孤立存在,必须与类的实例相关联.如果要将方法作为参数传递,就必须把方法的细节封装在一种新类型的对象中,即委托。
二、委托的作用
引入委托后,编程人员可以把方法的引用封装在委托对象中(把过程的调用转化为对象的调用,充分体现了委托加强了面向对象编程的思想。),然后把委托对象传递给需要引用方法的代码,这样在编译的过程中我们并不知道调用了哪个方法,这样一来,C#引入委托机制后,使得方法声明和方法实现的分离,充分体现了面向对象的编程思想。
三、c#委托示例代码
protected void Page_Load(object sender, EventArgs e)
{
//声明委托的两种方法(命名和匿名)
//匿名方法
delegate1 p = delegate(string s)
{
Response.Write(s);
};
p("大众");
//命名方法
delegate1 p1 = new delegate1(testclass.print);
p1("计算机");
}
delegate void delegate1(string s);
class testclass
{
public static void print(string s)
{
HttpContext.Current.Response.Write(s);
}
}