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.

  • 相关阅读:
    [leetcode]259. 3Sum Smaller 三数之和小于目标值
    题型总结之K Sum
    [Leetcode]167. Two Sum II
    题型总结之Sliding Window
    [Leetcode]703. Kth Largest Element in a Stream 数据流中的第 K 大元素
    [Leetcode]307. Range Sum Query
    pycharm同一目录下无法import明明已经存在的.py文件
    python高级特性:迭代器与生成器
    self的含义,为什么类调用方法时需要传参数?
    git三:远程仓库GitHub
  • 原文地址:https://www.cnblogs.com/LeimOO/p/3615047.html
Copyright © 2011-2022 走看看