C# 中的委托和事件(3)_C/C++语言_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

C# 中的委托和事件(3)

作者:黑客防线网安C/C++教程基地 来源:黑客防线网安C/C++教程基地 浏览次数:0

本篇关键词:事件委托方法可以
黑客防线网安网讯:   输出如下:  Morning, Jimmy Zhang  早上好, 张子阳  我们现在对委托做一个总结:  委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将...
   输出如下:
  Morning, Jimmy Zhang
  早上好, 张子阳
  我们现在对委托做一个总结:
  委托是一个类它定义了方法的类型使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性
  将方法绑定到委托
  看到这里,是不是有那么点如梦初醒的感觉?于是,你是不是在想:在上面的例子中,我不一定要直接在GreetPeople()方法中给 name参数赋值,我可以像这样使用变量:
以下是引用片段:
  static void Main(string[] args) {
  string name1, name2;
  name1 = "Jimmy Zhang";
  name2 = "张子阳";
  GreetPeople(name1, EnglishGreeting);
  GreetPeople(name2, ChineseGreeting);
  Console.ReadKey();
  }
  而既然委托GreetingDelegate 和 类型 string 的地位一样,都是定义了一种参数类型,那么,我是不是也可以这么使用委托?
以下是引用片段:
  static void Main(string[] args) {
  GreetingDelegate delegate1, delegate2;
  delegate1 = EnglishGreeting;
  delegate2 = ChineseGreeting;
  GreetPeople("Jimmy Zhang", delegate1);
  GreetPeople("张子阳", delegate2);
  Console.ReadKey();
  }
  如你所料,这样是没有问题的,程序一如预料的那样输出这里,我想说的是委托不同于string的一个特性:可以将多个方法赋给同一个委托,或者叫将多个方法绑定到同一个委托,当调用这个委托的时候,将依次调用其所绑定的方法。在这个例子中,语法如下:
以下是引用片段:
  static void Main(string[] args) {
  GreetingDelegate delegate1;
  delegate1 = EnglishGreeting; // 先给委托类型的变量赋值
  delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
  // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法
  GreetPeople("Jimmy Zhang", delegate1);
  Console.ReadKey();
  }
  输出为:
  Morning, Jimmy Zhang
  早上好, Jimmy Zhang
  实际上,我们可以也可以绕过GreetPeople方法,通过代理来直接调用EnglishGreeting和ChineseGreeting:
以下是引用片段:
  static void Main(string[] args) {
  GreetingDelegate delegate1;
  delegate1 = EnglishGreeting; // 先给委托类型的变量赋值
  delegate1 += ChineseGreeting; // 给此委托变量再绑定一个方法
  // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法
  delegate1 ("Jimmy Zhang");
  Console.ReadKey();
  }
  NOTE:这在本例中是没有问题的,但回头看下上面GreetPeo
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-15068-1.html
网站维护教程更新时间:2012-04-04 22:49:25  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer