c#如何终止委托?求代码。
答案:2 悬赏:10
解决时间 2021-02-04 03:48
- 提问者网友:猖狂醉薇
- 2021-02-03 13:29
c#如何终止委托?求代码。
最佳答案
- 二级知识专家网友:邪性洒脱
- 2021-02-03 14:58
public delegate void aDelegate();
static void Main(){
var de = new aDelegate(a);
de +=b;
de();//调用委托
de-=a;//移除委托
de-=b;
de =c;
de();
}
static void a(){Console.WriteLine("a method")}
static void b(){Console.WriteLine("bbbb ")}
static void c(){Console.WriteLine("ccccc")}
static void Main(){
var de = new aDelegate(a);
de +=b;
de();//调用委托
de-=a;//移除委托
de-=b;
de =c;
de();
}
static void a(){Console.WriteLine("a method")}
static void b(){Console.WriteLine("bbbb ")}
static void c(){Console.WriteLine("ccccc")}
全部回答
- 1楼网友:一场云烟
- 2021-02-03 16:24
委托,从字面上理解在生活中可以找到一些例子,比如说某人患有疾病,他在没有犯病前给身边的人说:“要是我大叫一声,你就赶紧送我上医院”。 这就是一个约定或者叫委托。
那么当此人大叫的时候,身边的人不用问怎么回事,直接送他去医院了。
注意,这里触发了一个事件,就是那人大叫,另一人执行了一个送医院的过程,也就是委托的内容。
回到写代码上,委托一般用在事件的处理或者是线程间的消息、数据等传送。
public delegate void takemeouteventhandler(); //这里定义了一个委托,这就是规范。没有参数
public class a
{
public event takemeouteventhandler takemeout; //class a定义了一个上面委托类型的事件
public void dosomething()
{
.......
if(this.takemeout!=null) //触发了这个事件
this.takemeout();
......
}
}
public class b
{
a a = new a();
public b()
{
a.takemeout += new takemeouteventhandler(t); //监听a的事件,如果触发后执行方法t
}
private void t()
{
........
}
}
以上是简单代码,是关于两个class之间的。
线程之间的传递,也类似。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯