书上介绍包括网上找的各种资料给的解释时:委托是执行安全的类,它的使用方式与类类似(即都需要定义再实例化),不同在于,类在实例化之后叫对象或类的实例,但委托在实例化后仍叫委托,委托可以把函数作为参数传递.
语法声明:
delegate <return type> <delegate-name> <parameter list>
定义了一个Print类,包含一个静态方法和一个实例方法
public class Print {
//打印Hello public static void PrintHello() { Console.WriteLine("Hello"); }
//打印World public static void PrintWorld() { Console.WriteLine("World"); } }
先学学使用委托,上面说到使用委托需要先定义后实例化
class Program { //定义无返回值无参数的委托:意义:任何一个无返回值且无参数的方法都可以使用这个委托来调用 delegate void MyDelegate(); static void Main(string[] args) { //这里在实例化委托时需要提供一个参数,这个参数就是委托要执行的方法 MyDelegate myDelegate = new MyDelegate(Print.PrintHello); //调用委托 myDelegate();//输出Hello Console.ReadKey(); } }
上面看到委托参数提供的是一个静态方法,下面尝试一下实例方法
class Program { //定义无返回值无参数的委托:意义:任何一个无返回值且无参数的方法都可以使用这个委托来调用 delegate void MyDelegate(); static void Main(string[] args) { //这里在实例化委托时需要提供一个参数,这个参数就是委托要执行的方法 MyDelegate myDelegate = new MyDelegate(new Print().PrintWorld); //调用这个委托 myDelegate();//输出World Console.ReadKey(); } }
说明在实例化一个委托时,要给它一个参数,这个参数就是委托执行的方法,它可以是静态方法,也可以是实例方法(这一点有别于函数指针,函数指针只能调用静态方法)
这是一个基本委托的使用,但现在觉着用处不大,还不如直接调用方法,再看下面的情况
原文:https://www.cnblogs.com/GnailGnepGnaw/p/10633810.html