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.

  • 相关阅读:
    Microsoft.NET Framework 全面开源
    SqlCommandBuilder笔记[原]
    C#几种排序方法的整理[原]
    无聊用js写了一个模拟的购物车[原]
    Visio2005数据库建模视频[原]
    JavaScript读取XML文件[整理]
    IIS中对NetFrameWork进行注册
    时间不等人 创业准备开始了
    用CSS和HTML标签来截取过长的文字部分变成省略号
    C#在SQl中存取图片image[原]
  • 原文地址:https://www.cnblogs.com/LeimOO/p/3615047.html
Copyright © 2011-2022 走看看