static void Main(string[] args) { PrintStrDelegate ps1 = new PrintStrDelegate(WriteToScreen); PrintString.Print("Hello World", ps1); PrintStrDelegate ps2 = WriteToFile; PrintString.Print("Hello Delegate!!!", ps2); }
public static void Print(string str, PrintStrDelegate ps) { Console.WriteLine("Print(string str, PrintStrDelegate ps)"); ps(str); }
static void Main(string[] args) { Printer printer = new Printer(); //委托与实例方法进行绑定 PrintIntDelegate printInt1 = new PrintIntDelegate(printer.PrintInt_1); Console.WriteLine("通过委托调用实例方法"); printInt1(100); Console.WriteLine(); //委托与静态方法绑定 PrintIntDelegate printInt2 = new PrintIntDelegate(Printer.PrintInt_2); Console.WriteLine("通过委托调用静态方法"); printInt2(100); Console.WriteLine(); //带有返回值得多播委托 PrintIntDelegate printInt3 = printInt1 + printInt2; printInt3 = (PrintIntDelegate)Delegate.Combine(printInt1, printInt2); //调用带有返回值得多播委托 Console.WriteLine("调用带有返回值得多播委托"); int iRet = printInt3(1000); Console.WriteLine("委托的个数: " + printInt3.GetInvocationList().Length); Console.WriteLine("多播委托返回值: iRet= " + iRet); Console.WriteLine(); printInt3 = printInt3 - printInt2; Console.WriteLine("委托进行减法运算"); iRet = printInt3(1000); Console.WriteLine("委托的个数: " + printInt3.GetInvocationList().Length); Console.WriteLine("委托返回值: iRet =" + iRet); Console.WriteLine(); //无返回值的的多播委托 PrintStrDelegate printStr; printStr = new PrintStrDelegate(printer.PrintStr_1); printStr += new PrintStrDelegate(Printer.PrintStr_2); printStr("c# winform"); Console.Read(); }