• C#练习委托、事件、事件处理


    控制台应用程序效果:

    1

    代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace MyEventTest
    {
        class Program
        {
            /// <summary>
            /// 第一步 新建委托需要的带参数的类,属于事件的参数的子类
            /// </summary>
            public class MyClassEventArgs : EventArgs
            {
                private string name;
    
                public string Name
                {
                    get { return name; }
                    set { name = value; }
                }
                private int age;
    
                public int Age
                {
                    get { return age; }
                    set { age = value; }
                }
    
    
            }
    
            /// <summary>
            /// //第二步 新建一个带参数的委托
            /// </summary>
            /// <param name="sender">触发源</param>
            /// <param name="mc">参数</param>
            public delegate void MyDelegate(object sender,MyClassEventArgs mc);
    
            /// <summary>
            /// 第三步 新建一个会触发事件的类
            /// </summary>
            public class Custom
            {
                /// <summary>
                /// 第四步 新建一个委托发生时触发的事件
                /// </summary>
                public event MyDelegate Shout;
    
                private string name;
    
                public string Name
                {
                    get { return name; }
                    set { name = value; }
                }
                private int age;
    
                public int Age
                {
                    get { return age; }
                    set { age = value; }
                }
    
                public Custom()
                {
    
                }
    
                public Custom(string n, int a)
                {
                    name = n;
                    age = a;
                }
    
                public void Buy()
                {
                    Console.WriteLine("{0}:我要来买东西!",this.name);
    
                    //第五步 在方法中关联事件
                    MyClassEventArgs mcea = new MyClassEventArgs();
                    mcea.Name = name;
                    mcea.Age = age;
                    if (Shout != null)
                    {
                        Shout(this,mcea);
                    }
                }
            }
    
            /// <summary>
            /// 第六步 新建一个事件发生后要执行的类
            /// </summary>
            public class Reporter
            {
                public void Notify(object sender, MyClassEventArgs mcea)
                {
                    Console.WriteLine("老板:小白快去接客了,客户名字叫{0},年龄{1}岁",mcea.Name,mcea.Age);
                }
            }
    
    
            /// <summary>
            /// 第七步 做一种触发事件的情况,并把事件和事件的处理关联起来
            /// </summary>
            /// <param name="args"></param>
            static void Main(string[] args)
            {
                Custom c1 = new Custom("大美女",18);
                Reporter r1 = new Reporter();
    
                c1.Shout +=new MyDelegate(r1.Notify);
    
                c1.Buy();
            }
        }
    }
  • 相关阅读:
    Rsync实现文件同步的算法(转载)
    Python模拟登录cnblogs
    负载均衡中四层和七层的介绍(转帖)
    Lvs+Keepalived实现MySQL高可用
    MySQL配置主主及主从备份
    Vim扩展YouCompleteMe插件
    使用Git
    Django回忆录
    Ansible安装配置及使用
    Hive学习之四 《Hive分区表场景案例应用案例,企业日志加载》 详解
  • 原文地址:https://www.cnblogs.com/Mysterious/p/3416484.html
Copyright © 2020-2023  润新知