using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleProject
{
public delegate void CallBack(int a, int b);
class DelegateTest
{
public static void Main()
{
FeedBack(CallBackControl, 3, 4);
FeedBack(CallBackMsgbox, 5, 4);
Console.ReadKey();
}
public static void FeedBack(CallBack callBack, int a, int b)
{
//其实在 .net 1.1版本callBack(a,b)直接这样写的;如果写成callBack.Invoke(a,b)反而有问题。为什么出现这种情况,Delegate本质是一个类,callBack 现在是一个对象,一个对象后面直接跟参数不是很奇怪,其实他省略了Invoke方法。后来.net2.0为了向下兼容,可以把Invoke方法写出来,所以这2种写法都是可以的。
callBack.Invoke(a, b);
}
public static void CallBackControl(int a, int b)
{
Console.WriteLine("CallBackControl's result is {0}. ", a + b);
}
public static void CallBackMsgbox(int a, int b)
{
Console.WriteLine("CallBackMsgbox 's result is {0}. ", a + b);
}
}
}