有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享介绍.NET中的委派(一)吧。
【 tulaoshi.com - 编程语言 】
回调函数//using System;using System.WinForms;// 在beta2版本中为:System.Windows.Formsusing System.IO;class Set {   private Object[] items;   public Set(Int32 numItems) {  items = new Object[numItems];  for (Int32 i = 0; i  numItems; i++) items[i] = i;   }   // 定义 Feedback,类型为delegate   // (注意: 这个类型在Set类中是嵌套的)   public delegate void Feedback(  Object value, Int32 item, Int32 numItems);   public void ProcessItems(Feedback feedback) {  for (Int32 item = 0; item  items.Length; item++) { if (feedback != null) {// 一旦指定了回调,便调用它们feedback(items[item], item + 1, items.Length); }  }   }}class App {   [STAThreadAttribute]   static void Main() {  StaticCallbacks();  InstanceCallbacks();   }   static void StaticCallbacks() {  // 创建一个Set对象,其中有五个项目  Set setOfItems = new Set(5);  // 处理项目,feedback=null  setOfItems.ProcessItems(null);  Console.WriteLine();  // 处理项目,feedback=Console  setOfItems.ProcessItems(new Set.Feedback(App.FeedbackToConsole));  Console.WriteLine();  // 处理项目,feedback =MsgBox  setOfItems.ProcessItems(new Set.Feedback(App.FeedbackToMsgBox));  Console.WriteLine();  // 处理项目,feedback = console AND MsgBox  Set.Feedback fb = null;  fb += new Set.Feedback(App.FeedbackToConsole);  fb += new Set.Feedback(App.FeedbackToMsgBox);  setOfItems.ProcessItems(fb);  Console.WriteLine();   }   static void FeedbackToConsole(  Object value, Int32 item, Int32 numItems) {  Console.WriteLine("Processing item {0} of {1}: {2}.",  item, numItems, value);   }   static void FeedbackToMsgBox(  Object value, Int32 item, Int32 numItems) {  MessageBox.Show(String.Format("Processing item {0} of {1}: {2}.",item, numItems, value));   }   static void InstanceCallbacks() {  //创建一个Set对象,其中有五个元素  Set setOfItems = new Set(5);  // 处理项目,feedback=File  App appobj = new App();  setOfItems.ProcessItems(new Set.Feedback(appobj.FeedbackToFile));  Console.WriteLine();   }   void FeedbackToFile(  Object value, Int32 item, Int32 numItems) {  StreamWriter sw = new StreamWriter("Status", true);  sw.WriteLine("Processing item {0} of {1}: {2}.",  item, numItems, value);  sw.Close();   }}//    注意代码最上面的Set类。假设这个类包含一组将被单独处理的项目。当你创建Set对象时,将它要操纵的项目数传递给它的构造函数。然后构造函数再创建对象(Objects)数组并初始化每一个整型值。来源:http://www.tulaoshi.com/n/20160219/1600436.html
看过《介绍.NET中的委派(一)》的人还看了以下文章 更多>>