• C#事件


    C#事件:介绍委托和事件

     分别介绍:

     1:事件是特殊化的委托,委托是事件的基础。

         委托:使用委托可以将方法应用(不是方法)封装在委托对象内,然后将委托对象 传递给调用方法的代码,这样编译的时候代码就没有必要知道调用哪个方法。通过 使用委托程序能够在运行时动态的调用不供的方法。

                 C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

    委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。

         事件:事件是对象发送的消息,发送信号通知客户发生了操作。这个操作可能是由 鼠标单击引起的,也可能是由某些其他的程序逻辑触发的。事件的发送方不需要知 道那个对象或者方法接收它引发的事件,发送方只需知道在它和接收方之间存在的 中介(Deletgate)

    2:在GUI图形界面中的事件(单击按钮或者选择菜单等)是已经定义好的事件,所需要 的就是注册事件。我们也可以自己定义声明事件,可以将自己定义的事件应用到程 序的任何地方。事件和委托是分不开的,c# 中使用委托来声明事件。 如果在类里面声明事件,那么必须先声明该事件的委托类型,也可以使用一个事先 已经声明好的委托类型

    using System;
    namespace SimpleEvent
    {
       using System;
    
       public class EventTest
       {
          private int value;
    
          public delegate void NumManipulationHandler();   //委托
    
          public event NumManipulationHandler ChangeNum;   //由委托定义事件
    
          protected virtual void OnNumChanged()
          {
             if (ChangeNum != null)   
             {
                ChangeNum();
             }
             else
             {
                Console.WriteLine("Event fired!");
             }
    
          }
          public EventTest(int n )
          {
             SetValue(n);
          }
          public void SetValue(int n)
          {
             if (value != n)
             {
                value = n;
                OnNumChanged();
             }
          }
       }
       public class MainClass
       {
          public static void Main()
          {
             EventTest e = new EventTest(5);
             e.SetValue(7);
             e.SetValue(11);
             Console.ReadKey();
          }
       }
    }

    结果:

    Event Fired!
    Event Fired!
    Event Fired!

  • 相关阅读:
    PHP使用引用变量foreach时,切记其他循环不要使用同一个名字的变量
    PHP 获取给定时间的周日时间或月末时间或每天
    MySQL Load Data InFile 文件内容导入数据库和 Into OutFile导出数据到文件
    直接拿来用!最火的iOS开源项目(一)
    12个有趣的C语言问答
    Flex,Flash,AS3,AIR的关系和区别
    Stage3D大冒险
    c/c++程序中内存区划分
    IOS—— strong weak retain assign 学习
    如何提高你的移动开发中AS3/AIR性能
  • 原文地址:https://www.cnblogs.com/2714585551summer/p/5324335.html
Copyright © 2020-2023  润新知