C#委托使用 朱雀 2021-06-24 16:00 538阅读 0赞 ## 委托是啥 ## 委托是一个类,它定义了方法的类型,说白了就是将一个方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法。 可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。 ## Event关键字 ## 它封装了委托类型的变量,使得:在类的内部,不管你声明它是public还是protected,它总是private的。在类的外部,注册“+=”和注销“-=”的访问限定符与你在声明事件时使用的访问符相同。 ## Tip ## 给委托增加或者减少方法使用-=和+=,使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。 ## 一个例子 ## class Program { static void Main(string[] args) { //此委托方法是在GreetingManager中定义的 GreetingManager gm = new GreetingManager(); gm.MakeGreet += EnglishGreeting; gm.GreetPeople("Man"); gm.GreetPeople("先生"); Console.ReadKey(); } public static void EnglishGreeting(string name) { Console.WriteLine("Morning, " + name); } public static void ChineseGreeting(string name) { Console.WriteLine("你好," + name); } } //定义委托,定义了可以代表的方法的类型 public delegate void GreetingDelegate(string name); public class GreetingManager { //在GreetingManager类中声明delegate1变量 public event GreetingDelegate MakeGreet; public void GreetPeople(string name) { if(MakeGreet != null)//如果有方法注册委托变量 { MakeGreet(name);//通过委托调用方法 } } } ## \-=与+=的原理 ## MakeGreet事件确实是一个GreetingDelegate类型的委托,只不过不管是不是声明为public,它总是被声明为private。另外,它还有两个方法,分别是add\_MakeGreet和remove\_MakeGreet,这两个方法分别用于注册委托类型的方法和取消注册。实际上也就是: “+= ”对应 add\_MakeGreet,“-=”对应remove\_MakeGreet。而这两个方法的访问限制取决于声明事件时的访问限制符。 在add\_MakeGreet()方法内部,实际上调用了System.Delegate的Combine()静态方法,这个方法用于将当前的变量添加到委托链表中。我们前面提到过两次,说委托实际上是一个类,在我们定义委托的时候: public delegate void GreetingDelegate(string name); 当编译器遇到这段代码的时候,会生成下面这样一个完整的类: public sealed class GreetingDelegate:System.MulticastDelegate{ public GreetingDelegate(object @object, IntPtr method); public virtual IAsyncResult BeginInvoke(string name, AsyncCallback callback, object @object); public virtual void EndInvoke(IAsyncResult result); public virtual void Invoke(string name); } 更多访问[http://www.tracefact.net/tech/009.html][http_www.tracefact.net_tech_009.html] [http_www.tracefact.net_tech_009.html]: http://www.tracefact.net/tech/009.html
相关 C#委托 一、什么是委托 委托是一种类型,就跟int,double,struct,string,class一样。它定义了一个函数的类型。现在,我们有一个方法,我们希望它的参数是某个 川长思鸟来/ 2024年02月17日 22:49/ 0 赞/ 63 阅读
相关 C#——委托 C\——委托 委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托 冷不防/ 2023年01月03日 04:22/ 0 赞/ 239 阅读
相关 C#委托 委托: 委托定义了方法的类型,使得方法可以作为另一个方法的参数来进行传递,这样可以在程序中避免使用大量的判断语句,同时使程序具有更好的扩展性。 可以将多个方法绑定到同一个委 矫情吗;*/ 2022年09月17日 07:28/ 0 赞/ 197 阅读
相关 C#中委托的使用 1. 在类中声明一个委托(关键字 delegate ,类似于定义了一个抽象函数): public delegate int Add(int m, int n); 2. 定 Dear 丶/ 2022年05月19日 05:49/ 0 赞/ 254 阅读
相关 c#委托 首先创建个控制台应用程序在Program下创建一个无参数无返回值的静态方法,可以输出一句话 static void Text() { Cons 迈不过友情╰/ 2022年04月16日 06:15/ 0 赞/ 258 阅读
相关 C# 委托 一、什么是委托? 初次理解这么抽象的概念确实有点挺难的,如果学过C语言,可能知道C语言里可以把一个方法当做参数来传递,委托大概类似也是这样一个原理。 想象一下,在一个 ゞ 浴缸里的玫瑰/ 2022年04月08日 12:15/ 0 赞/ 280 阅读
相关 C# 委托 什么是委托? 委托和事件这两个概念是完全配合的。委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成。委托是一个类,当你对它实例化时,要提供一个引 野性酷女/ 2022年02月16日 13:51/ 0 赞/ 281 阅读
相关 C# 委托 委托 作用:将多个参数相同的方法,进行委托统一调用,将参数和调用方法传递给委托,由委托调用。 好处:可以将多个方法内相同的部分提取出来,根据参数和方法参数,调用需要的 ゝ一世哀愁。/ 2021年10月14日 02:00/ 0 赞/ 383 阅读
相关 C# 委托 什么是委托? 委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递。委托是一种特殊类型的对象,其特殊之处在于委托中包含的是一个或多个方法的地址,而不是数据。委 谁践踏了优雅/ 2021年06月24日 16:10/ 0 赞/ 498 阅读
相关 C#委托使用 委托是啥 委托是一个类,它定义了方法的类型,说白了就是将一个方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法。 可以避免在程序中大量使用If-Else 朱雀/ 2021年06月24日 16:00/ 0 赞/ 539 阅读
还没有评论,来说两句吧...