首页 / C# / c#-具有更好的性能,操作或与事件的连线
c#-具有更好的性能,操作或与事件的连线
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-具有更好的性能,操作或与事件的连线,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1803字,纯文字阅读大概需要3分钟。
内容图文
![c#-具有更好的性能,操作或与事件的连线](/upload/InfoBanner/zyjiaocheng/650/a2359b955941439e924e27ef9eeb9360.jpg)
幕后故事:
因此,我试图回答这个问题,但不确定如何解决.我认为也许有人在这里有很好的学习资源,或者可能给出一个明确的答案.
简而言之,我想知道在标准C#OOP编程中哪些在性能上更好,哪些在实践上更好.
题:
关联事件是更好还是让消费者注入可以被结果调用的动作呢?
例:
例如,我正在构建一个搜索面板.我的小组应该真的很擅长搜索,但并不十分在乎如何使用其结果.
因此,我的两个选择是,在我的视图模型中创建一个完成的事件,并从与结果相关的内容入手,或者选择第二个选项,允许调用者注入将在搜索完成时调用的回调操作.
我最初的想法是至少它们是相等的,因为事件和操作都应该只是被调用的函数引用指针.但是,我可以看到气泡事件的效果较差.
示例代码:
public class Consumer{
public Consumer(){
StandardViewModel viewModel = new StandardViewModel(CompletedCallback);
viewModel.customEvent += someEventHandler;
}
public void someEventHandler(Object sender, EventArgs args){
// do something with results
}
public void CompletedCallback(List<string> results){
// do something with results
}
}
public class StandardViewModel{
public event EventHandler customEvent;
private Action<IEnumerable<string> _callback;
public StandardViewModel(Action<IEnumerable<string>> callback){
_callback = callback;
}
}
解决方法:
性能差异很小.
>事件由编译器生成的委托字段实现.当只有一个订阅者附加到事件时(通常情况),该委托就像手动委托一样.
>事件通常具有对象发送者,EventArgs args参数(尽管这是可选的).这可能会导致微小的性能差异.与仅将委托传递给构造函数相比,附加到事件上的性能成本也很小.
>事件不会在.NET中“冒泡”.
这些都是非常小的要点.
基于代码质量问题,应使用哪种回调样式?
>进行回调时,以后将无法更改回调.该活动始终会有一个订阅者.
>您还可以验证此委托不为空.
>您还可以将此委托传递给其他代码.事件将无法实现.
>在事件版本中,您实际上被迫不在乎有多少订户.可能为零或多个.订户列表可以随时更改.从这个角度来看,这更加灵活.
使用哪种样式取决于应该如何使用该类.在这里,我更喜欢事件样式,因为您确实不以任何方式关注订户列表.
内容总结
以上是互联网集市为您收集整理的c#-具有更好的性能,操作或与事件的连线全部内容,希望文章能够帮你解决c#-具有更好的性能,操作或与事件的连线所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。