zoukankan      html  css  js  c++  java
  • c#基础(2) 理解委托和事件

    正如 jimmyzhang所说的:较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。

    总结:

    (1)委托时一个类,它定义了方法的类型,使得可以将方法当做另外一个方法的参数来进行传递,这种将方法动态的付给参数的做法,可以避免在程序中大量使用if---else switch等语句,同时使程序有很好的可扩展性。

    (2)使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时,可以依次调用所有绑定的方法。

    (3)事件其实没什么不好理解的,声明一个事件不过类似声明了一个封装的委托类型的变量而已。

    下面贴个简单的例子,大家体会一下吧:不要认为看过了就懂了,动手亲自去实践一下吧

     public delegate void wenhaodelegate(string name);

        
    public class wenhao
        {
            
    public event wenhaodelegate delegate1;
            
    public void iwenhao(string name)
            {
                
    if (delegate1 != null)//如果有方法注册到委托变量
                {
                    delegate1(name);
    //通过委托调用方法
                }
            }
        }


        
    class Program
        {

            
    public static void english(string name)
            {
                Console.WriteLine(
    "morning:" + name);
            }

            
    public static void chinese(string name)
            {
                Console.WriteLine(
    "早上好:" + name);
                Console.Read();
            }



            
    static void Main(string[] args)
            {
                wenhao mywenhao 
    = new wenhao();
                mywenhao.delegate1 
    += english;
                mywenhao.delegate1 
    += chinese;
                mywenhao.iwenhao(
    "段英杰");
            }
        }
  • 相关阅读:
    Tensorflow学习笔记1
    强化学习——从最简单的开始入手
    MATLAB R2017a 安装与破解
    C# 理解lock
    Bayer Pattern
    OpenCV参考手册之Mat类详解
    opencv学习之颜色空间转换cvtColor()
    UNICODE下CString转string
    解决VS2013报错fopen、sprintf等函数安全的问题
    Convert between cv::Mat and QImage 两种图片类转换
  • 原文地址:https://www.cnblogs.com/danyingjie/p/1965720.html
Copyright © 2011-2022 走看看