• 关于事件的标准化用法


    微软推荐了一套写事件程序的标准,下面我来简单的演示一下,将要实现如下功能,进行一次for循环,没循环一次,触发一次是事件,将当前循环的次数输出,事件定义及实现类如下:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace 事件
    {
        
    //定义委托,要注意委托名应以EventHandle结尾,参数应为object sender和IndexEventArgs e
        public delegate void MydelegateEventHandle(object sender,IndexEventArgs e);
        
    //定义IndexEventArgs类,应作为EventArgs的子类

        
    public class IndexEventArgs : EventArgs //EventArgs是包含事件数据的类的基类
        {
            
    int index;
            
    public IndexEventArgs(int i)
            
    {
                index 
    = i;
            }


            
    public int Index
            
    {
                
    get return index; }
            }

        }

        
    //定义功能类
        public class A
        
    {
            
    public event MydelegateEventHandle MyEvent;//定义事件委托
            public void count()
            
    {
                
    for (int i = 1; i < 101; i++)
                
    {
                    IndexEventArgs e 
    = new IndexEventArgs(i);
                    OnMyEvent(e);
    //每循环一次,执行一次事件

                }

            }

            
            
    //定义protected类型的虚方法,方法名应为事件委托名前面加“On”

            
    protected virtual void OnMyEvent(IndexEventArgs e)
            
    {
                
    if (MyEvent != null)
                
    {
                    MyEvent(
    this, e);
                }

            }

        }

    }


    主函数调用如下:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace 事件
    {
        
    class Program
        
    {
            
    static void Main(string[] args)
            
    {
                A a 
    = new A();
                a.MyEvent 
    += new MydelegateEventHandle(a_MyEvent)//关联事件
                a.count();
            }


            
    static void a_MyEvent(object sender, IndexEventArgs e)
            
    {
                Console.WriteLine(e.Index);
            }

        }

    }


    请大家注意看注释中的命名规范,我要说明一点,建立一个虚方法来执行事件是为了方便的实现功能的增删只要再写一个子类,重写OnMyEvent方法就可以了。
    肩负责任,永不退缩
  • 相关阅读:
    使用openssl搭建CA并颁发服务器证书
    PKCS#1规范阅读笔记2--------公私钥ASN.1结构
    PKCS#1规范阅读笔记1--------基本概念
    Chrome 扩展机制
    Docker部署zookeeper集群和kafka集群,实现互联
    ASP.NET Identity实现分布式Session,Docker+Nginx+Redis+ASP.NET CORE Identity
    Transmission添加SSL访问
    重磅来袭,水木PC客户端全面改版,欢迎使用!
    CLR via C# 3rd
    IL命令
  • 原文地址:https://www.cnblogs.com/ATP/p/869130.html
Copyright © 2020-2023  润新知