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.

  • 相关阅读:
    探究 encode 和 decode 的使用问题(Python)
    C语言结构体在内存中的存储情况探究------内存对齐
    文件基本操作 (C语言)
    利用Xamaria构建Android应用-公交发车信息屏
    ChakraCore ,Net托管编程
    Go并发与.Net TAP
    码农视角
    让isis支持高德地图
    Fedora Server 上配置 MariaDb 集群
    .Net Sokcet 异步编程
  • 原文地址:https://www.cnblogs.com/LeimOO/p/3615047.html
Copyright © 2011-2022 走看看