c# – 私有EventHandler和私有事件EventHandler之间的区别?
发布时间:2020-12-15 04:26:52 所属栏目:百科 来源:网络整理
导读:基本上标题是什么. 这两者之间有什么区别(我目前正在使用第一个) private EventHandler _progressEvent; 和 private event EventHandler _progressEvent; 我有一个方法 void Download(string url,EventHandler progressEvent) { doDownload(url) this._progr
基本上标题是什么.
这两者之间有什么区别(我目前正在使用第一个) private EventHandler _progressEvent; 和 private event EventHandler _progressEvent; 我有一个方法 void Download(string url,EventHandler progressEvent) { doDownload(url) this._progressEvent = progressEvent; } doDownload方法会调用 _progressEvent(this,new EventArgs()); 到目前为止,它工作正常.但我觉得我做的事情非常糟糕. 解决方法
第一个定义委托,第二个定义事件.这两者是相关的,但它们通常使用方式非常不同.
通常,如果您使用的是EventHandler或EventHandler< T>,则表示您正在使用某个事件.调用者(用于处理进度)通常会订阅事件(不传递代理),如果您有订阅者,则会引发事件. 如果你想使用更实用的方法,并传入一个委托,我会选择一个更合适的委托来使用.在这种情况下,您实际上并未在EventArgs中提供任何信息,因此使用System.Action可能更合适. 话虽如此,从显示的小代码中看,事件方法似乎更合适.有关使用事件的详细信息,请参阅C#编程指南中的Events. 使用事件的代码可能类似于: // This might make more sense as a delegate with progress information - ie: percent done? public event EventHandler ProgressChanged; public void Download(string url) { // ... No delegate here... 当你打电话给你的进度时,你会写: var handler = this.ProgressChanged; if (handler != null) handler(this,EventArgs.Empty); 这个用户会把它写成: yourClass.ProgressChanged += myHandler; yourClass.Download(url); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |