c#的事件实现的原理
来源:互联网 发布:淘宝直播怎么私信主播 编辑:程序博客网 时间:2024/05/27 16:43
<script type="text/javascript">google_ad_client = "pub-2048279401139630";google_ad_slot = "8856771542";google_ad_width = 728;google_ad_height = 90;document.write("<s"+"cript type='text/javascript' s"+"rc='http://pagead2.googlesyndication.com/pagead/show_ads"+"."+"js'></scr"+"ipt>");</script>
如果你看了本BLOG写的委托的文章,理解本文应该比较容易,C#中的事件的实现是通过委托直接实现的,所以本文只给出事件实现的代码示例,如果你明白了委托,相信看懂本代码应该不难。
using System;
namespace Events
{
delegate void SomeDelegate(string sender);
interface ISomeInterface
{
event SomeDelegate SomeEvent;
void PerformSomeEvent();
void SomeEventHandler(string sender);
}
abstract class AbstractClass:ISomeInterface
{
public virtual event SomeDelegate SomeEvent;
public abstract void SomeEventHandler(string sender);
public abstract void PerformSomeEvent();
protected void PerformSomeEventInternal(string sender)
{
if(null!=SomeEvent)
{
SomeEvent(sender);
}
}
protected void SomeEventHandlerInternal(string sender,string receiver)
{
Console.WriteLine("some event has been handler");
Console.WriteLine(" Sender is ["+ sender+"]");
Console.WriteLine("Receiver is ["+receiver+"]");
Console.WriteLine("------------------------------------");
}
}
class SomeClass:AbstractClass,ISomeInterface
{
public override void PerformSomeEvent()
{
PerformSomeEventInternal("Some Class");
}
public override void SomeEventHandler(string sender)
{
SomeEventHandlerInternal(sender,"Some Class");
}
}
class AnotherClass:AbstractClass,ISomeInterface
{
public override void PerformSomeEvent()
{
PerformSomeEventInternal("Another Class");
}
public override void SomeEventHandler(string sender)
{
SomeEventHandlerInternal(sender,"Another Class");
}
}
class SomeApplication
{
public static void SomeEventStaticHander(string sender)
{
Console.WriteLine("some event has been handler.");
Console.WriteLine(" Sender is ["+ sender+"]");
Console.WriteLine("Receiver is [some application]");
Console.WriteLine("-------------------------------------");
}
static void Main(string [] args)
{
SomeClass someclass=new SomeClass();
AnotherClass anotherclass=new AnotherClass();
someclass.SomeEvent+=new SomeDelegate(someclass.SomeEventHandler);
someclass.SomeEvent+=new SomeDelegate(anotherclass.SomeEventHandler);
someclass.SomeEvent+=new SomeDelegate(SomeApplication.SomeEventStaticHander);
someclass.PerformSomeEvent();
Console.ReadLine();
}
}
}
namespace Events
{
delegate void SomeDelegate(string sender);
interface ISomeInterface
{
event SomeDelegate SomeEvent;
void PerformSomeEvent();
void SomeEventHandler(string sender);
}
abstract class AbstractClass:ISomeInterface
{
public virtual event SomeDelegate SomeEvent;
public abstract void SomeEventHandler(string sender);
public abstract void PerformSomeEvent();
protected void PerformSomeEventInternal(string sender)
{
if(null!=SomeEvent)
{
SomeEvent(sender);
}
}
protected void SomeEventHandlerInternal(string sender,string receiver)
{
Console.WriteLine("some event has been handler");
Console.WriteLine(" Sender is ["+ sender+"]");
Console.WriteLine("Receiver is ["+receiver+"]");
Console.WriteLine("------------------------------------");
}
}
class SomeClass:AbstractClass,ISomeInterface
{
public override void PerformSomeEvent()
{
PerformSomeEventInternal("Some Class");
}
public override void SomeEventHandler(string sender)
{
SomeEventHandlerInternal(sender,"Some Class");
}
}
class AnotherClass:AbstractClass,ISomeInterface
{
public override void PerformSomeEvent()
{
PerformSomeEventInternal("Another Class");
}
public override void SomeEventHandler(string sender)
{
SomeEventHandlerInternal(sender,"Another Class");
}
}
class SomeApplication
{
public static void SomeEventStaticHander(string sender)
{
Console.WriteLine("some event has been handler.");
Console.WriteLine(" Sender is ["+ sender+"]");
Console.WriteLine("Receiver is [some application]");
Console.WriteLine("-------------------------------------");
}
static void Main(string [] args)
{
SomeClass someclass=new SomeClass();
AnotherClass anotherclass=new AnotherClass();
someclass.SomeEvent+=new SomeDelegate(someclass.SomeEventHandler);
someclass.SomeEvent+=new SomeDelegate(anotherclass.SomeEventHandler);
someclass.SomeEvent+=new SomeDelegate(SomeApplication.SomeEventStaticHander);
someclass.PerformSomeEvent();
Console.ReadLine();
}
}
}
运行的结果截图:
- c#的事件实现的原理
- c#的事件实现的原理
- C#事件的实现
- C#里的委托和事件实现
- C#中实现事件的学习笔记
- C#里的委托和事件实现
- C#里的委托和事件实现
- C#里的委托和事件实现
- C#接口事件的实现解析
- C#里的委托和事件实现
- 小议C#的事件和委托实现
- C#如何定义一个事件,实现事件的调用
- C#凯撒密码的原理与实现
- C#常用的CRUD操作实现原理
- C#中foreach的实现原理
- jQuery的实现原理的模拟代码 -3 事件处理
- 事件循环的原理
- .NET基础扩展系列-事件的实现原理
- 深入理解C语言指针的奥秘
- 使用xp的一些技巧
- C#高级编程之“代码属性”
- 轻松掌握Ajax.net系列教程十六:使用DropDownExtender
- c#的委托代码示例
- c#的事件实现的原理
- oracle学习求助
- Assembly学习心得
- Assembly学习心得(第二部分)
- 一些Flex开源项目的整理
- Remoting研究
- 站点导航组件之间的关系(图)
- 爱的守则
- 随便写写,自娱自乐!