
文章目录
概述
你也许经常会看到别人写的代码里有OnXXX方法,而你却觉得很奇怪,为什么会这样命名呢?它的意义在哪里?
解释
OnXXX可以理解为“在XXX事情发生时”,它有3种常见使用方式:
1、配合事件、委托或方法一起使用
Winform中窗体的Load事件大家一定不会陌生,它由OnLoad方法触发Load事件并执行一个回调。
以下代码摘自微软公共语言运行时。
using System.ComponentModel; [EditorBrowsable (EditorBrowsableState.Advanced)] protected virtual void OnLoad (EventArgs e);
2、配合protected virtual一起使用
参考我的博文 C#开发笔记之01-为什么开源框架会大量的使用protected virtual?
3、配合抽象基类的抽象方法一起使用
以下代码摘自ProxyServerEx。
public abstract class Listener { public abstract void OnAccept(IAsyncResult ar); } public sealed class HttpListener : Listener { public override void OnAccept(IAsyncResult ar) { try { Socket NewSocket = ListenSocket.EndAccept(ar); if(NewSocket != null) { HttpClient NewClient = new HttpClient( NewSocket, new DestroyDelegate(this.RemoveClient)); NewClient.UserLocalIP = Address; AddClient(NewClient); NewClient.StartHandshake(); } } catch { } try { //Restart Listening ListenSocket.BeginAccept(new AsyncCallback(this.OnAccept), ListenSocket); } catch { Dispose(); } } }
3种方式没有本质上的区别,只是所依赖的C#语法稍有不同,以此展示OnXXX方法的使用。
请读者自行思考,消息队列Active Message Queue中的OnMessage方法是以上3种方式中的哪一种?
本文由 .Net中文网 原创发布,欢迎大家踊跃转载。
转载请注明本文地址:https://www.byteflying.com/archives/958。
评论列表(1条)
[…] 该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflyin… […]