c# 里的委托是什么意思 它和事件应该是什么关系啊
http://finesite.cnblogs.com/archive/2006/04/05/255884.html...
http://finesite.cnblogs.com/archive/2006/04/05/255884.html
展开
2个回答
展开全部
delegate就是委托
使用delegate可以动态的决定要调用的方法,其实,delegate就是存放着一个方法的指针,是通过delegate来转向链接那个方法的:
public static delegate De1(string sun,int a);//这里的参数必须要和链接的方法的参数相同(名字不一定要相同, 但是类型一定要)
public static void Sun(string name,int num)
{
for(int x=0;x<num;x++)
{
Console.WriteLine(name);
}
}
public static void Main()
{
De1 link=new De1(Sun);//建立一个新的delegate,同时将它链接到Sun
link("!@#",10); //这里就可以直接进行调用了
}
每一个事件中都包含了很多delegate,触发事件的过程是这样的:
触发事件的指令->将事件中的每个delegate调用一便->在调用delegate的时候,事实上delegate指向了用户所制作的方法,那么也就调用了用户所需要的事件处理方法
下面是对事件的实例:
public static delegate De2(string sun,int a)//delegate是事件的基础条件
public static event De2 OnSun;//这个事件的声明规定了它的类型是De2
public static void Sun(string name,int num)
{
De2(name,num);//这个方法能够触发事件
for(int x=0;x<num;x++)
{
MessageBox.Show(name);
}
}
public static void Main()
{
OnSun+=new De2(on);//为事件增加处理函数
}
public static on(string name,int num)
{
.........//对事件的处理过程
}
使用delegate可以动态的决定要调用的方法,其实,delegate就是存放着一个方法的指针,是通过delegate来转向链接那个方法的:
public static delegate De1(string sun,int a);//这里的参数必须要和链接的方法的参数相同(名字不一定要相同, 但是类型一定要)
public static void Sun(string name,int num)
{
for(int x=0;x<num;x++)
{
Console.WriteLine(name);
}
}
public static void Main()
{
De1 link=new De1(Sun);//建立一个新的delegate,同时将它链接到Sun
link("!@#",10); //这里就可以直接进行调用了
}
每一个事件中都包含了很多delegate,触发事件的过程是这样的:
触发事件的指令->将事件中的每个delegate调用一便->在调用delegate的时候,事实上delegate指向了用户所制作的方法,那么也就调用了用户所需要的事件处理方法
下面是对事件的实例:
public static delegate De2(string sun,int a)//delegate是事件的基础条件
public static event De2 OnSun;//这个事件的声明规定了它的类型是De2
public static void Sun(string name,int num)
{
De2(name,num);//这个方法能够触发事件
for(int x=0;x<num;x++)
{
MessageBox.Show(name);
}
}
public static void Main()
{
OnSun+=new De2(on);//为事件增加处理函数
}
public static on(string name,int num)
{
.........//对事件的处理过程
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询