zoukankan      html  css  js  c++  java
  • Net中事件的用法之二

    Net中事件的用法之二

    1.委托与事件的区别 

    事件对权限做了控制
      1.委托可以直接调用
      事件不可以直接调用
      2.委托允许外面直接赋值
      事件不允许外面直接赋值

    2.事件与委托的实例比较

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace MyEvent
    {
        //委托的声明
        public delegate void DoSometing();
       
        /// <summary>
        ///  委托与事件的关系
        ///  委托是一种类型
        ///  事件是委托的一个实例
        /// </summary>
        public class MyEvent
        {
            public DoSometing doSomethingDelegate;//委托的一个变量
            public event DoSometing doSomethingEvent;//一个事件,就是委托的一个变量,加上了event关键字
            //事件的使用
            public void InvokeEvent()
            {
                Console.WriteLine("------------InvokeEvent------------");
                if (doSomethingEvent != null)
                {
                    doSomethingEvent();
                }
            }
            public void InvokeDelegate()
            {
                Console.WriteLine("------------InvokeDelegate------------");
                if (doSomethingDelegate != null)
                {
                    doSomethingDelegate();
                }
            }
        }
    }
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace MyEvent
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("欢迎来到流星小子博客学习");
                MyEvent myEvent = new MyEvent();
                myEvent.doSomethingEvent += ShowSomething;//为事件实例化
                myEvent.doSomethingEvent += ShowSomething;//为事件实例化
                //事件不可以直接调用
                //myEvent.doSomethingEvent();
                //事件不允许外面直接赋值
                //myEvent.doSomethingEvent = ShowSomething;
                myEvent.doSomethingEvent += ShowSomething;//为事件实例化
                myEvent.doSomethingEvent += ShowSomething;//为事件实例化
                myEvent.doSomethingEvent -= ShowSomething;//为事件实例化
                myEvent.InvokeEvent();//触发事件
    
                myEvent.doSomethingDelegate += ShowSomething;
                myEvent.doSomethingDelegate += ShowSomething;
                myEvent.doSomethingDelegate += ShowSomething;
                //委托可以直接调用
                myEvent.doSomethingDelegate();
                //委托允许外面直接赋值
                myEvent.doSomethingDelegate = ShowSomething;
    
                myEvent.doSomethingDelegate += ShowSomething;
                myEvent.doSomethingDelegate -= ShowSomething;
                myEvent.InvokeDelegate();
                Console.Read();
            }
            private static void ShowSomething()
            {
                Console.WriteLine("ShowSomething");
            }
        }
    }
  • 相关阅读:
    [SoapUI] UrlEncode编码/UrlDecode解码网站
    [Token] 从index.jsp中获取Token
    [Groovy]获取当前活动的Environment,获取response中节点的name和节点的value
    [Cookie] Clear Cookie
    [Groovy] Groovy API
    [Schema] I have updated my XML Schema for my service but SoapUI still generates/validates according to the old schema.
    [SoapUI] SoapUI可以做到些什么?功能有多强大?
    [Training Video
    [JSON] Validating/Asserting JSON response with Jsonlurper
    华中农业大学第四届程序设计大赛网络同步赛 I
  • 原文地址:https://www.cnblogs.com/dongh/p/14768319.html
Copyright © 2011-2022 走看看