C#之委托

来源:互联网 发布:淘宝网店群 编辑:程序博客网 时间:2024/06/02 07:31

定义

  委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

本质

  我们知道委托是一个引用类型,所以它具有引用类型所具有的通性。在C#中使用delegate关键字定义委托,然后使用我们熟悉的函数调用的语法来调用委托。
当我们用delegate关键字声明委托时,编译器自动为我们生成类。类的名字即为委托变量名,访问类型为定义的委托访问类型。

如何使用

在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。
using System;using System.Collections.Generic;using System.Text;namespace Delegate{//定义委托,它定义了可以代表的方法的类型public delegate void GreetingDelegate(string name);class Program{private static void EnglishGreeting(string name){Console.WriteLine("Morning, " + name);}private static void ChineseGreeting(string name){Console.WriteLine("早上好, " + name);}//注意此方法,它接受一个GreetingDelegate类型的参数,该参数是返回值为空,参数为string类型的方法private static void GreetPeople(string name, GreetingDelegate MakeGreeting){MakeGreeting(name);}static void Main(string[] args){GreetPeople("Jimmy ", EnglishGreeting);GreetPeople("张子阳", ChineseGreeting);Console.ReadKey();}}}

输出结果是
Morning, Jimmy
早上好, 张子阳

好处

1.相当于用方法作为另一方法参数(类似于C的函数指针)2.在两个不能直接调用的方法中作为桥梁,如:在多线程中的跨线程的方法调用就得用委托
2 0
原创粉丝点击