zoukankan      html  css  js  c++  java
  • [自学问题总结]委托与事件

    委托,通熟易懂的举个例子:妈妈让小新去买东西

    一 首先是C#语法

    public delegate void BuyThingEventHandler();

    delegate是关键字

    EventHandler是一个声明委托的微软C#的命名标准

    二 定义小新类

    /// <summary>
    /// 小新类
    /// </summary>
    private class CraYon
    {
    	public static void BuyThing()
    	{
    		Console.WriteLine("妈妈,东西买好了!");
    	}
    }


    三 主方法

    internal class Program
    	{
    		public delegate void BuyThingEventHandler();
    
    		private static void Main(string[] args)
    		{
    			BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);
    
    			myDelegate();
    			Console.ReadKey();
    		}
    	}
    BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);这个是委托声明方法。
    注:委托的参数和返回值类型,都要和具体委托的方法一致:

    public delegate void BuyThingEventHandler();


    public static void BuyThing(){
    Console.WriteLine("妈妈,东西买好了!");

    }

    四 委托链

    简单描述为,妈妈让小新去买完东西后,还让他带小白去散步。

    using System;
    
    namespace test1
    {
    	internal class Program
    	{
    		public delegate void BuyThingEventHandler();
    
    		private static void Main(string[] args)
    		{
    			//委托
    			BuyThingEventHandler myDelegate = new BuyThingEventHandler(CraYon.BuyThing);
    			myDelegate += CraYon.WalkDog;
    
    			myDelegate();
    			Console.ReadKey();
    		}
    	}
    
    	/// <summary>
    	/// 小新类
    	/// </summary>
    	public class CraYon
    	{
    		public static void BuyThing()
    		{
    			Console.WriteLine("妈妈,东西买好了!");
    		}
    
    		public static void WalkDog(){
    			Console.WriteLine("妈妈,小狗散完步了,收集的大便给你!");
    		}
    	}
    }

    其实我们只是在程序中加了
    myDelegate += CraYon.WalkDog;
    这个委托就相当于做了两件事,先买东西再带小白散步。

  • 相关阅读:
    [SDOI 2009] 晨跑
    [ZJOI 2009] 假期的宿舍
    [BZOJ 2006] 狼抓兔子
    [BZOJ 1691] 挑剔的美食家
    [HNOI 2015] 菜肴制作
    [Codeforces 489E] Nastya and King-Shamans
    sum(sum(abs(y))) 中 sum(sum())什么意思?
    matlab 函数 bwarea
    系统启动挂载根文件系统时Kernel panic
    rmmod: chdir(/lib/modules): No such file or directory
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3196814.html
Copyright © 2011-2022 走看看