标签:
1 namespace DelegateTest 2 { 3 public delegate string MyStringProcDelegate(string str); 4 class MyStringProc 5 { 6 public string ProcString(string str,MyStringProcDelegate strProcDelegate) 7 { 8 return strProcDelegate(str); 9 } 10 } 11 }
在调用的时候实例化这个类,再调用对应的方法。如下:
1 namespace DelegateTest 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 MyStringProc msp = new MyStringProc(); 8 string str1=msp.ProcString("I am good.", StringToLower); 9 string str2 = msp.ProcString("I am good too", StringToUpper); 10 Console.WriteLine("{0},{1}",str1,str2); 11 Console.ReadKey(); 12 } 13 static string StringToLower(string str) 14 { 15 return str.ToLower(); 16 } 17 static string StringToUpper(string str) 18 { 19 return str.ToUpper(); 20 } 21 } 22 }
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 MyStringProc msp = new MyStringProc(); 6 MyStringProcDelegate strProcDelegate; 7 strProcDelegate = StringProc1; 8 strProcDelegate += StringProc2; 9 msp.ProcString("I am a good boy",strProcDelegate); 10 Console.ReadKey(); 11 } 12 13 static string StringProc1(string str) 14 { 15 str= "["+str+"]"; 16 Console.WriteLine(str); 17 return str; 18 } 19 static string StringProc2(string str) 20 { 21 str= "{" + str + "}"; 22 Console.WriteLine(str); 23 return str; 24 } 25 }
输出如下:
以上并没有达到完全封装,本例用到的MyStringProcDelegate类型的委托变量是可以封装在MyStringProc类中,客户端直接调用该类的方法即可,无需再声明委托变量。如下:
1 public delegate string MyStringProcDelegate(string str); 2 class MyStringProc 3 { 4 public MyStringProcDelegate strProcDelegate; 5 public string ProcString(string str) 6 { 7 if (strProcDelegate!=null) 8 str=strProcDelegate(str); 9 return str; 10 } 11 }
调用代码如下:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 MyStringProc msp = new MyStringProc(); 6 msp.strProcDelegate = StringProc1; 7 msp.strProcDelegate += StringProc2; 8 msp.ProcString("I am a good boy"); 9 Console.ReadKey(); 10 } 11 static string StringProc1(string str) 12 { 13 str= "["+str+"]"; 14 Console.WriteLine(str); 15 return str; 16 } 17 static string StringProc2(string str) 18 { 19 str= "{" + str + "}"; 20 Console.WriteLine(str); 21 return str; 22 } 23 }
输出如下:
1 public delegate string MyStringProcDelegate(string str); 2 class MyStringProc 3 { 4 public event MyStringProcDelegate strProcDelegate; 5 public string ProcString(string str) 6 { 7 if (strProcDelegate != null) 8 str = strProcDelegate(str); 9 return str; 10 } 11 }
调用方法如下:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 MyStringProc msp = new MyStringProc(); 6 msp.strProcDelegate += StringProc1; 7 msp.strProcDelegate += StringProc2; 8 msp.ProcString("I am a good boy"); 9 Console.ReadKey(); 10 } 11 static string StringProc1(string str) 12 { 13 str= "["+str+"]"; 14 Console.WriteLine(str); 15 return str; 16 } 17 static string StringProc2(string str) 18 { 19 str= "{" + str + "}"; 20 Console.WriteLine(str); 21 return str; 22 } 23 }
输出如下:
标签:
原文地址:http://www.cnblogs.com/kungge/p/4713627.html