zoukankan      html  css  js  c++  java
  • C#: Delegate and Event

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Test.Other
    {
        public class TestDelegateAndEvent
        {
            public delegate void TestDelegate();
            public event TestDelegate TestEventHandler;
    
            public void Test()
            {
                TestDelegate testDelegate = new TestDelegate(Test1);
                TestEventHandler += new TestDelegate(Test1);
    
                testDelegate();
                TestEventHandler();
            }
            public void Test1()
            {
            }
        }
    }
    TestDelegateAndEvent.cs
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Test.Other
    {
        class Program
        {
            //public static delegate void TestDelegate();
            //public static event TestDelegate TestEventHandler;
            static void Main(string[] args)
            {
                // Delegate can be triggered directly
                //TestDelegate testDelegate = new TestDelegate(Test);
                //testDelegate();
    
    
                //TestDelegateAndEvent test = new TestDelegateAndEvent();
                //test.TestEventHandler += Test;
    
                // Error: The delegate inner the class is private even if the type is public.
                // test.TestDelegate();
    
                // Error: Event can't be triggered directly.
                //test.TestEventHandler();
    
                Console.ReadLine();
            }
    
            public static void Test()
            {
                Console.WriteLine("test");
            }
        }
    }
    Program.cs


    总结:

    1. Delegate可以将方法作为另外一个方法的参数带入其中进行运算;

    2. 实际上Delegate和Event都是类,Event是一种特殊类型的Delegate;

    3. 类内的Delegate不能被对象调用,即便这个delegate是Public的;

    4. delegate和event都重载了+=,-=, 但是delegate可以用=直接赋值,但是event不可以;

    5. delegate和event都不能由对象直接触发;

    6. delegate和event都不能是static.

  • 相关阅读:
    Windows10 搭建 ElasticSearch 集群服务
    python开发目录
    nohup命令使用
    shell脚本概述
    关于ELK
    keepalived+DR
    shell脚本中awk的用法
    shell脚本中sed的用法
    shell脚本中grep的用法
    shell检测入侵与邮件报警
  • 原文地址:https://www.cnblogs.com/LeimOO/p/3615047.html
Copyright © 2011-2022 走看看