自定义委托,事件,参数的简单随笔

.Net Framework的编码规范:

  • 委托类型的名称都应该以EventHandler结束。
  • 委托的原型定义:有一个void返回值,并接受两个输入参数:一个Object 类型,一个 EventArgs类型(或继承自EventArgs)。
  • 继承自EventArgs的类型应该以EventArgs结尾。

     event本身是C#在委托基础上封装一些用于多事件注册的机制,这是event和委托的区别,委托仅仅是控件类定义和用户自定义事件方法共同遵守的方法的contract契约,一个方法类型而已 。

using  System;
using  System.Collections.Generic;
using  System.Text;

namespace  DelegateApplication
{
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            
string  str  =   " show !!! " ;
            InitEvent(str);
            Console.ReadLine();
        }
        
private   static   void  InitEvent( string  showStr)
        {
            
// 初始化事件参数类,赋值
            InformationEventArgs eventArgs  =   new  InformationEventArgs();
            eventArgs.Information 
=  showStr;

            InformationEvent eventer 
=   new  InformationEvent();
            InformationCall call 
=   new  InformationCall();
            
            eventer.InformationClick
+=   new  InformationHandler(call.ShowInformation);
           
            eventer.OnInformation(eventArgs);
            Console.ReadLine();
        }
    }
    
///   <summary>
    
///  事件参数
    
///   </summary>
     public   class  InformationEventArgs : EventArgs
    {
        
private   string  _message;
        
public   string  Information
        {
            
get
            {
                
return  _message;
            }
            
set
            {
                _message 
=  value;
            }
        }
    }
    
// 委托
     public   delegate   void  InformationHandler( object  sender,InformationEventArgs e);
    
// 事件
     public   class  InformationEvent
    {
        
public   event  InformationHandler InformationClick;
        
// 触发事件
         public   void  OnInformation(InformationEventArgs e)
        {
            
if  (InformationClick  !=   null )
            {
                InformationClick(
this , e); // 匹配委托  进行InformationEventArgs传值
            }
        }
    }

    
public   class  InformationCall
    {
        
private   string  _strInformation;
        
public    string  InformationString
        {
            
get
            {
                
return  _strInformation;
            }
            
set
            {
                _strInformation 
=  value;
            }
        }
        
// 调用的方法  匹配委托  显示事件参数的值
         public   void  ShowInformation( object  sender, InformationEventArgs e)
        {
            InformationString 
=  e.Information;
            Console.WriteLine(InformationString);
        }
    }
}

 

源代码:/Files/jasenkin/DelegateApplication.rar

你可能感兴趣的:(自定义)