C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思?

C#开发笔记之02-什么时候使用OnXXX方法,这种命名是什么意思?

C#开发笔记概述

文章目录

概述

你也许经常会看到别人写的代码里有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

发表评论

登录后才能评论