zoukankan      html  css  js  c++  java
  • 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!

  • 相关阅读:
    最近出现很多数据库被攻击案例,在数据库中的文本型字段中加入了script代码
    深入线程,实现自定义的SynchronizationContext
    云计算 (转载)
    VS 2008和.NET 3.5 Beta2新特性介绍(转载)
    js对文字进行编码涉及3个函数
    Sharepoint,MOSS,多语言Webpart (.net2.0)
    Silverlight Toolkit
    Silverlight 2.0正式版下周发布
    搭建Silverlight2.0开发环境(转载)
    如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
  • 原文地址:https://www.cnblogs.com/2714585551summer/p/5324335.html
Copyright © 2011-2022 走看看