Example #1
0
        static void Main(string[] args)
        {
            PrintStrDelegate ps1 = new PrintStrDelegate(WriteToScreen);

            PrintString.Print("Hello World", ps1);

            PrintStrDelegate ps2 = WriteToFile;

            PrintString.Print("Hello Delegate!!!", ps2);
        }
Example #2
0
 public static void Print(string str, PrintStrDelegate ps)
 {
     Console.WriteLine("Print(string str, PrintStrDelegate ps)");
     ps(str);
 }
Example #3
0
        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();
        }