using System;

namespace DelegateEventDemo
{
    public class Publisher
    {
        public Action<string> MyDelegate;

        public event Action<string> MyEvent;

        public void TriggerDelegate(string message)
        {
            MyDelegate?.Invoke(message);
        }

        public void TriggerEvent(string message)
        {
            MyEvent?.Invoke(message);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var publisher = new Publisher();

            publisher.MyDelegate += Console.WriteLine;
            publisher.MyEvent += Console.WriteLine;

            publisher.TriggerDelegate("Hello from Delegate!");
            publisher.TriggerEvent("Hello from Event!");

            publisher.MyDelegate("你好");
            publisher.MyEvent("你好");//事件只能在它声明的类内部发布
        }
    }
}