0
点赞
收藏
分享

微信扫一扫

C#事件委托

惠特曼 2022-03-10 阅读 73
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test1
{
    public delegate void SayDlg(string str);
    class Program
    { 
        // 事件 被限制的委托变量
        public static event SayDlg SayEvent;
        static void Main(string[] args)
        {
            // 委托声明
            // 方法以变量的形式传递,并以方法的形式执行
            SayDlg dlg = SayHello;
            // 委托链
            dlg += SayWorld;

            dlg += SayWorld;
            dlg -= SayWorld;

            dlg("123");

            // 匿名函数 只使用一次
            SayDlg dlg1 = delegate (string str)
            {
                Console.WriteLine($"{str},匿名");
            };
            dlg1("345");


            SayDlg dlg2 = (str) => { Console.WriteLine($"{str},lambda"); };
            dlg2("678");

            // 注册事件
            SayEvent += Program_SayEvent;
            //SayEvent -= Program_SayEvent;
            if(SayEvent != null)
            {
                // 触发事件
                SayEvent("91011");
            }
            Console.ReadKey();
        }

        private static void Program_SayEvent(string str)
        {
            Console.WriteLine($"{str},event");
        }

        public static void SayHello(string str)
        {
            Console.WriteLine($"{str},hello");
        }

        public static void SayWorld(string str)
        {
            Console.WriteLine($"{str}, World");
        }
    }
}

举报

相关推荐

0 条评论