MyException - 我的异常网
当前位置:我的异常网» C# » 请教委托如何理解

请教委托如何理解

www.MyException.Cn  网友分享于:2013-12-31  浏览:7次
请问委托怎么理解啊
第一次接触这个词
貌似跟函数   事件这些很有关联
但还是很不理解到底委托是怎样的角色
委托都做了什么

------解决方案--------------------
可以把委托看作是一种安全的函数指针,指向函数的指针。
------解决方案--------------------
委托就素 你不想干那事,或者不能干那事
就叫其他东西去干它..


------解决方案--------------------
jobine(愚人渡) 说的对,类似于函数指针,微软认为他是安全的。
例如定于一个delegate类型名字叫delegate1 public delegate void delegate1(int? i);
而且有个已经定义好的函数 public void target_for_delegate1(int? i){}
就可以赋值给d delegate1 d = new delegate1(target_for_delegate1);
使用的时候就和用函数一样 d(0);

------解决方案--------------------
http://www.enet.com.cn/eschool/video/c/
里面有两节讲委托的课,慢慢看
------解决方案--------------------
通俗一点,但不是特别准确
入门者可以这样理解
委托是一种指向方法的类型
一个委托的实例可以理解为一个指向方法的变量


------解决方案--------------------
我觉得委托最重要的是他的异步调用,防止搞死主线程。
------解决方案--------------------
public delegate string AdviseDelegate(int score); //建立委托。
public AdviseDelegate AdviseDelegateInstance;

if (AdviseDelegateInstance != null) //异步调用。
{
AdviseDelegateInstance.BeginInvoke(score, new System.AsyncCallback(CallBackMethod), "ABC ");
}
private void CallBackMethod(IAsyncResult asyncresult) //回调函数。
{
string result = AdviseDelegateInstance.EndInvoke(asyncresult);
string stateObj = (string)asyncresult.AsyncState;
MessageBox.Show( "Get Result! " + result, stateObj.ToString());
}
------解决方案--------------------
委托就是函数指针。
你调用委托的时候就想着是传递了被调用函数的函数名,这样就理解了。
------解决方案--------------------
委托相当于JAVA中的接口,C++中的指针函数
也可以当作观察者模式
------解决方案--------------------
简单的说委托也就是函数连接器,当方法传送方法时就需要使用委托.方法的参数我们习惯用数据,使用委托参数变成方法.

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有