现在的位置: 首页 > 综合 > 正文

.net C#委托的个人见解

2013年05月03日 ⁄ 综合 ⁄ 共 1789字 ⁄ 字号 评论关闭

今天突然想到对委托的理解大致都忘了 就从新温习了一下 希望能帮到大家

首先看一下MSDN对委托的解释

               委托是一种定义方法签名的类型。 当实例化委托时,您可以将其实例与任何具有兼容签名的方法相关联。 您可以通过委托实例调用方法。

什么是委托
  首先要知道什么是委托,用最通俗易懂的话来讲,你就可以把委托看成是用来执行方法(函数)的一个东西。

 

如何使用委托
  在使用委托的时候,你可以像对待一个类一样对待它。即先声明,再实例化。只是有点不同,类在实例化之后叫对象或实例,但委托在实例化后仍叫委托。

下面是我对于委托的理解代码

 

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 
 6 namespace 委托的应用
 7 {
 8     public  delegate void wenhou(string name);//定义一个委托 wenhou
 9     class Program
10     {
11         private static void Englishwenhou(string name)//定义一个英文的问候  输出goodmorning + 名字
12         {
13             Console.WriteLine("GoodMorning{0}", name);
14         }
15         private static void Chineswenhou(string name)//定义一个中文的问候  输出 早上好 +名字
16         {
17             Console.WriteLine("早上好{0}", name);
18         }
19 
20         private static void delegatewenhou(string name, wenhou wh)//定义一个委托wenhou类型的变量 ,这个委托会根据方法名字的来调用方法 并且把参数传入相应的方法
21         {
22             wh(name);
23         }
24         static void Main(string[] args)
25         {
26             /*    第一种使用委托的方法(此方法就是通过参数的形式来给委托传值)
27              
28              
29                 delegatewenhou("曹俊", Englishwenhou);                     //设置为中文问候的委托
30              
31                  Console.WriteLine("---------------------------------\n");
32              
33                 delegatewenhou("jun.cao", Chineswenhou);                    //设置为英文问候的委托
34              
35                 Console.ReadKey();                                                  //获取输入的按键 -- 再次用于不立即关闭调试窗口
36              */
37 
38             /*
39              输入:
40                    GoodMorning jun.cao
41                    ---------------------------------
42              
43                    早上好曹俊
44              */
45 
46             //第二种使用委托的方法(直接给委托传值)
47 
48 
49 
50             wenhou wh = new wenhou(Englishwenhou);//向委托中添加英文问候的方法   ^-^ 是不是和实例化对象 和实例化类一样? 实际上委托在编译器执行的时候就是类 只不过委托是类型安全的。。。
51 
52             wh("jun.cao");                  //通过委托调用的 英文问候
53             Console.WriteLine("---------------------------------\n");
54             wh += new wenhou(Chineswenhou); //向委托中添加中文问候的方法
55 
56             wh("曹俊");                 // 调用委托 ,委托会依次 调用委托中绑定的方法
57             Console.WriteLine("---------------------------------\n");
58 
59             wh -= new wenhou(Englishwenhou);  //移除委托中的方法。   ^-^ 可以添加委托方法 就可以去除掉委托方法咯  +=  是向委托中添加方法  -= 就是移除委托中已存在的方法
60 
61             wh("曹俊");
62 
63             Console.ReadKey();
64             /*
65              输入:
66                         GoodMorningjun.cao
67                         ---------------------------------
68 
69                         GoodMorning曹俊
70                         早上好曹俊
71                         ---------------------------------
72 
73                         早上好曹俊
74 
75 
76              */
77         }
78     }
79 }

 

 

 

 

抱歉!评论已关闭.