搞不明白用委托有什么好处 .NET中的事件基本上是代理/委托实现的,如this.Load += new System.EventHandler(this.Form1_Load); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 更适用于Framework相对于Application 小程序确实体会不到委托的好处,反而会使程序变得很别扭,但是当程序到达一定复杂程度后,就能体现出来了,以后lz会体会到的。不过在有些地方是必须使用委托的,比如线程间操作UI控件,异步的回调函数等等。 C#里没有指针(不考虑unsafe),delegate就相当于函数指针。有些地方你可能不得不用函数指针的时候,就可以使用delegate。如在C#里调用API函数createthread时就需要函数指针,就需要用到delegate 委托是触发式的.比如在错误处理中,你当然可以用try..catch来处理,但并不能保证捕获所有的错误.你也不知道错误什么时候发生,所以你可以用委托来处理.protected override void OnInit(EventArgs e) { base.OnInit(e); this.Error += new System.EventHandler(this.ZTCPage_Error); } protected void ZTCPage_Error(object sender, System.EventArgs e) { string errMsg; Exception currentError = Server.GetLastError(); errMsg = "<link rel=\"stylesheet\" href=\"../Css/ZTC.CSS\">"; errMsg += "<h1>Page Error</h1><hr/>An unexpected error has occurred on this page. The system " + "administrators have been notified. Please feel free to contact us with the information " + "surrounding this error.<br/>"+ "The error occurred in: "+Request.Url.ToString()+"<br/>"+ "Error Message: <font class=\"ErrorMessage\">"+ currentError.Message.ToString() + "</font><hr/>"+ "<b>Stack Trace:</b><br/>"+ currentError.ToString(); errMsg += "<br><hr/><br><input type='button' value='返回前一页' onclick='history.back(-1);'>"; WriteErrorToText(Request.Url.ToString(),currentError.Message.ToString(),currentError.ToString()); Response.Write( errMsg ); Server.ClearError(); } 没有委托 就没有安全指针用没有委托 就没有事件用没有委托 就没有回调用没有委托 也没有异步调用没有委托 就没有多个进程没有委托 就没有windows form没有委托 那么你也不用学习.net 了那么你说委托 有什么用 没有委托 就没有安全指针用没有委托 就没有事件用没有委托 就没有回调用没有委托 也没有异步调用没有委托 就没有多个进程没有委托 就没有windows form没有委托 那么你也不用学习.net 了那么你说委托 有什么用___________________________________说得好! 没有委托 就没有安全指针用没有委托 就没有事件用没有委托 就没有回调用没有委托 也没有异步调用没有委托 就没有多个进程没有委托 就没有windows form没有委托 那么你也不用学习.net 了那么你说委托 有什么用----------------------------说得好,呵呵 http://www.cppblog.com/zhuweisky/archive/2005/09/11/193.aspx看看c++里事件机制的实现。看的懂的话。你就知道为什么要用委托了。就是为了实现事件机制。然后发现委托这东西他们做的狠安全,干脆就取消了函数指针取而代之。美其名曰:安全。 这个例子不是C#高级编程里的例子吗?这章的最后介绍了委托的好处呀。在这个例子中,只要告诉Sort数组和比较的函数(委托,函数指针)Sort只管算法。就可以完成任务了。而不用管类型。 C# winform 开发群,群号:57718204,我们期待您的加入!! C#读取xml呀 高手进来给指点一下 C#怎么画曲线? 绑定DataBinding问题 简单登录问题???? 用C#生成数字证书 blog的实现 创建第三方平台接入接口 需要用到Web Service吗? WPF,在路由事件链条上如何实现这个功能 C#如何用Access保存图片的相对路径???? 请各位说说.net技术究竟带给我们什么?通俗的说说看好吗? rtf文件保存(超链接) 后台自动生成xml格式的网站地图
不过在有些地方是必须使用委托的,比如线程间操作UI控件,异步的回调函数等等。
{
base.OnInit(e);
this.Error += new System.EventHandler(this.ZTCPage_Error);
}
protected void ZTCPage_Error(object sender, System.EventArgs e)
{
string errMsg;
Exception currentError = Server.GetLastError(); errMsg = "<link rel=\"stylesheet\" href=\"../Css/ZTC.CSS\">";
errMsg += "<h1>Page Error</h1><hr/>An unexpected error has occurred on this page. The system " +
"administrators have been notified. Please feel free to contact us with the information " +
"surrounding this error.<br/>"+
"The error occurred in: "+Request.Url.ToString()+"<br/>"+
"Error Message: <font class=\"ErrorMessage\">"+ currentError.Message.ToString() + "</font><hr/>"+
"<b>Stack Trace:</b><br/>"+
currentError.ToString();
errMsg += "<br><hr/><br><input type='button' value='返回前一页' onclick='history.back(-1);'>"; WriteErrorToText(Request.Url.ToString(),currentError.Message.ToString(),currentError.ToString()); Response.Write( errMsg );
Server.ClearError();
}
没有委托 就没有事件用
没有委托 就没有回调用
没有委托 也没有异步调用
没有委托 就没有多个进程
没有委托 就没有windows form
没有委托 那么你也不用学习.net 了
那么你说委托 有什么用
没有委托 就没有事件用
没有委托 就没有回调用
没有委托 也没有异步调用
没有委托 就没有多个进程
没有委托 就没有windows form
没有委托 那么你也不用学习.net 了
那么你说委托 有什么用
___________________________________说得好!
没有委托 就没有事件用
没有委托 就没有回调用
没有委托 也没有异步调用
没有委托 就没有多个进程
没有委托 就没有windows form
没有委托 那么你也不用学习.net 了
那么你说委托 有什么用
----------------------------
说得好,呵呵
看看c++里事件机制的实现。看的懂的话。你就知道为什么要用委托了。就是为了实现事件机制。然后发现委托这东西他们做的狠安全,干脆就取消了函数指针取而代之。美其名曰:安全。
在这个例子中,只要告诉Sort数组和比较的函数(委托,函数指针)Sort只管算法。就可以完成任务了。而不用管类型。