c# – 如何引发使用“事件属性”定义的事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何引发使用“事件属性”定义的事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1893字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何引发使用“事件属性”定义的事件](/upload/InfoBanner/zyjiaocheng/776/e3585d91fb8546f782d7da4567947d36.jpg)
我正在学习活动和代表&现在开始了多个活动.只是文档没有提供任何信息或代码示例来提升以这种方式定义的事件.你可以找到一个简单的例子
示例代码
public class Person
{
private string _name;
private string _phone;
public string Name
{
get { return _name; }
set
{
_name = value;
}
}
public string Phone
{
get { return _phone; }
set
{
_phone = value;
}
}
protected EventHandlerList EventDelegateCollection = new EventHandlerList();
//define the event key
static readonly object PhoneChangedEventKey = new object();
public event EventHandler PhoneChanged
{
add
{
EventDelegateCollection.AddHandler(PhoneChangedEventKey, value);
}
remove
{
EventDelegateCollection.RemoveHandler(PhoneChangedEventKey, value);
}
}
}
我想在设置电话号码时举起活动.如果有什么听起来很时髦,不明白我在说什么see here
更新
我想在此澄清一些疑问.有两种方法可以实际订阅并调用事件处理程序,其中包含步骤的经典模式(as described here)
>定义充当订阅方法的签名的委托.
>定义委派的事件
>定义引发处理程序的方法
注意:上面的方法为每个事件创建字段,因此消耗更多的内存reference
事件属性是您在下面执行的另一种方式
>定义充当事件键的对象
>定义一个方法,以便从事件调用列表中添加和删除事件的处理程序
>通过根据事件键确定事件处理程序来引发事件
解决方法:
这就是你应该如何提高它
码
public class Person
{
private string _name;
private string _phone;
public string Name
{
get { return _name; }
set
{
_name = value;
}
}
public string Phone
{
get { return _phone; }
set
{
_phone = value;
//Invoke the Handlers now
OnPhoneChanged();
}
}
protected EventHandlerList EventDelegateCollection = new EventHandlerList();
static readonly object PhoneChangedEventKey = new object();
public event EventHandler PhoneChanged
{
add
{
EventDelegateCollection.AddHandler(PhoneChangedEventKey, value);
}
remove
{
EventDelegateCollection.RemoveHandler(PhoneChangedEventKey, value);
}
}
private void OnPhoneChanged()
{
EventHandler subscribedDelegates = (EventHandler)this.EventDelegateCollection[PhoneChangedEventKey];
subscribedDelegates(this, EventArgs.Empty);
}
}
内容总结
以上是互联网集市为您收集整理的c# – 如何引发使用“事件属性”定义的事件全部内容,希望文章能够帮你解决c# – 如何引发使用“事件属性”定义的事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。