C# 2.0学习之--事件1

翻译 2006年06月23日 18:40:00

//Copyright (C) Microsoft Corporation.  All rights reserved.

// events1.cs
using System;
namespace MyCollections
{
   using System.Collections;

   // A delegate type for hooking up change notifications.
   public delegate void ChangedEventHandler(object sender, EventArgs e);

   // A class that works just like ArrayList, but sends event
   // notifications whenever the list changes.
   public class ListWithChangedEvent: ArrayList
   {
      // An event that clients can use to be notified whenever the
      // elements of the list change.
      public event ChangedEventHandler Changed;

      // Invoke the Changed event; called whenever list changes
      protected virtual void OnChanged(EventArgs e)
      {
         if (Changed != null)
            Changed(this, e);
      }

      // Override some of the methods that can change the list;
      // invoke event after each
      public override int Add(object value)
      {
         int i = base.Add(value);
         OnChanged(EventArgs.Empty);
         return i;
      }

      public override void Clear()
      {
         base.Clear();
         OnChanged(EventArgs.Empty);
      }

      public override object this[int index]
      {
         set
         {
            base[index] = value;
            OnChanged(EventArgs.Empty);
         }
      }
   }
}

namespace TestEvents
{
   using MyCollections;

   class EventListener
   {
      private ListWithChangedEvent List;

      public EventListener(ListWithChangedEvent list)
      {
         List = list;
         // Add "ListChanged" to the Changed event on "List".
         List.Changed += new ChangedEventHandler(ListChanged);
      }

      // This will be called whenever the list changes.
      private void ListChanged(object sender, EventArgs e)
      {
         Console.WriteLine("This is called when the event fires.");
      }

      public void Detach()
      {
         // Detach the event and delete the list
         List.Changed -= new ChangedEventHandler(ListChanged);
         List = null;
      } 
   }

    class Test
   {
      // Test the ListWithChangedEvent class.
      public static void Main()
      {
      // Create a new list.
      ListWithChangedEvent list = new ListWithChangedEvent();

      // Create a class that listens to the list's change event.
      EventListener listener = new EventListener(list);

      // Add and remove items from the list.
      list.Add("item 1");
      list.Clear();
      listener.Detach();
      }
   }
}

 


 

csc events1.cs
events1

相关文章推荐

C# Kinect 2.0 SDK 学习笔记(1)——彩色影像数据流

彩色影像数据流是Kinect摄像头最基本的数据,图像相当于一般的摄像头(废话)。 本节主要是获取Kinect摄像头的彩色影像数据,在Image控件上将其展示出来。 新建WPF项目KinectC...

游戏人生Silverlight(1) - 七彩俄罗斯方块[Silverlight 2.0(c#)]

[源码下载] 游戏人生Silverlight(1) - 七彩俄罗斯方块[Silverlight 2.0(c#)] 作者:webabcd 介绍 使用 Silverligh...

黑马程序员11——C#的委托以及在.NET1.x .NET2.0及.NET3.5写法的演变(未完待续)

---------------------- Windows Phone 7手机开发、.Net培训、 期待与您交流!---------------------- 什么是委托 定义 ...

【转载】C#中的泛型 (From dotNet SDK 2.0 Beta1)

泛型(generic)是C#语言2.0和通用语言运行时(CLR)的一个新特性。泛型为.NET框架引入了类型参数(type parameters)的概念。类型参数使得设计类和方法时,不必确定一个或多个具...

微信开发学习 OAUTH2.0 搭配事件推送

//网页授权反馈 function authorization($code) { echo $code; $appid="wx65eff0c7cf9cbca3"; $appse...

extJs 2.0学习笔记(事件注册总结篇)

本来,我也没把这档子事放在眼里,因为简单,例如:   Ext.get("elem").on("click",{fn:function(){alert("此元素被单击了!");}};   这样的代码...

[ASP.NET MVC 大牛之路]01 - C#高级知识点概要(1) - 委托和事件

要成为大牛,必然要有扎实的基本功,不然时间再长项目再多也很难有大的提升。本系列讲的C# 高级知识点,是非常值得去撑握的,不仅可以让你写代码时游刃有余,而且去研究和学习一些开源项目时,也不会显得那么吃力...

C#中的委托和事件—1.将方法作为方法的参数

引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没...

用 C++ 实现 C# 中的 委托/事件 (1-delegateEMU.cpp)

前两天看程序员杂志 看到关于 C# 中的委托/事件 觉得用起来好像是挺方便的 本人热衷于 C++ 想想用 C++ 来模拟似乎也可以 于是就有了下面的代码... (VC6 不支持偏特化 本人...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)