C#事件访问器 add和remove 控制事件运算符

  次阅读 作者:智能小宝 来源:互联网 2016-01-26 10:28 我要评论(0)

我们可以通过为事件定义事件访问器,来控制事件运算符+=、-=运算符的行为

有两个访问器:add和remove

声明事件的访问器看上去和声明一个属性差不多

下面示例演示了具有访问器的声明.两个访问器都有叫做value的隐式值参数,它接受实例或静态方法的引用

public event EventHandler Elapsed

{

add

{

//... 执行+=运算符的代码

}

remove

{

//... 执行-=运算符的代码

}

}

声明了事件访问器后,事件不包含任何内嵌委托对象.我们必须实现自己的机制来存储和移除事件的方法

事件访问器表现为void方法,也就是不能使用会返回值的return语句

完整示例:

//声明一个delegate

delegate void EventHandler();

class MyClass

{

//声明一个成员变量来保存事件句柄(事件被激发时被调用的delegate)

private EventHandler m_Handler = null;

//激发事件

public void FireAEvent()

{

if (m_Handler != null)

{

m_Handler();

}

}

//声明事件

public event EventHandler AEvent

{

//添加访问器

add

{

//注意,访问器中实际包含了一个名为value的隐含参数

//该参数的值即为客户程序调用+=时传递过来的delegate

Console.WriteLine("AEvent add被调用,value的HashCode为:" + value.GetHashCode());

if (value != null)

{

//设置m_Handler域保存新的handler

m_Handler = value;

}

}

//删除访问器

remove

{

Console.WriteLine("AEvent remove被调用,value的HashCode为:" + value.GetHashCode());

if (value == m_Handler)

{

//设置m_Handler为null,该事件将不再被激发

m_Handler = null;

}

}

}

}

class Program

{

static void Main(string[] args)

{

MyClass obj = new MyClass();

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...