因为委托也是面试常常问道的问题,分享一下我的理解。为什么使用委托。
- 1、为什么使用委托?
日常生活中,例如叫外卖,这里外卖小哥就是委托。
还有像电视剧里面 家人去监狱里面探监,有东西会请狱警交给罪犯,这里狱警就是委托。
从中可以得出委托是一个类,,因为只有类才有对象的概念,从而也体现了C#是面向对象的语言 - 2、委托的使用
delegate void Mydelegate();//定义委托
Mydelegate md;//声明委托
md=new Mydelegate(Obj.Method);//委托的实例化
MyMethod(d);//把参数传递给方法(委托把方法当做参数传到另一个方法)
- 3、委托的实际应用
委托的实际应用,我用到了我的笔记《Socket通讯备忘录》,
在里面因为.net的安全机制,控件不能跨线程调用,因此我使用了委托,将需要显示的参数,传递给控件。
//定义委托
public delegate void DelegateShow(string msg);
//声明和实例化委托,并且将方法 chatContentShow 当做对象传递给控件的 Invoke方法
DelegateShow @delegate = new DelegateShow(chatContentShow);
//控件使用委托的方法,并且传递参数
chatContent.Invoke(@delegate, msg);
//控件在方法内显示
private void ContextShow()
{
chatContent.AppendText("客户端连接成功"+ ClientInfo+ "\r\n");
}