我在想,如果像下面一样就完成了当姓名修改时就执行方法,很像是名称被改变的事件,这样的话,为何还要使用event来专门声明一个事件呢。初学者学到这儿总是疑惑,望高手解答。谢谢。string m_name;
public string Name
{
get { return m_name; }
set {
if (m_name != value)
{
m_name = value;
OnNameChanged(this, args);
}
}
}public void OnNameChanged(object sender, myEventArgs e)
{
Console.WriteLine("{0}名字已经改变为{1}", e.oldName, e.newName);
}
public string Name
{
get { return m_name; }
set {
if (m_name != value)
{
m_name = value;
OnNameChanged(this, args);
}
}
}public void OnNameChanged(object sender, myEventArgs e)
{
Console.WriteLine("{0}名字已经改变为{1}", e.oldName, e.newName);
}
http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html你就明白到底事件有什么作用,,,里面讲得很详细.也很通俗...我也是刚学,看了里面的教程,很有帮助....
{
Console.WriteLine("{0}名字已经改变为{1}", e.oldName, e.newName);
}比如在命令提示符下执行赋值操作 可能会输出:张三名子已经改变为李四
delegate就是函数指针,声明了处理这个事件的方法原型应该是什么.你的代码并没有错,也实现了某些事件的效果,但是,你的代码不具备任何扩展性.我们知道,很多时候,事件是提供给其他模块使用的. 比如,当按键按下时, 我们需要做些事.分析一下,是微软写的Button发生了一些事, 而具体干什么事,是我们自己写代码决定, 比如,跳出个警告框什么的.我们假设用你的办法, 我是另外一个开发人员, 我想名称改变时做些事.
那么, 我必须告诉你: 小王, 我想怎么怎么样,你帮我改一下你的OnNameChanged方法.
OK, 几个人还好, 几十个人呢? 别人都嚷嚷着: 小王!帮我改一下你的OnNameChanged方法, 我要做些事!
别人想做点什么事,每次要你该代码,重新编译.
如果别人找不到你,怎么办?
这样的程序, 能用吗?如果你使用事件, 别人不需要你小王做任何事, 他们只需要再自己的代码里面写OnNameChanged+=new delegate(MyOwnMethod);
就可以高枕无忧.孰优孰劣, 我想你应该明白了
shrinerain讲的真是深入浅出,通俗易懂:)
shrinerain 解释的很通俗
up~~
不过 如果是继承而不是实例,那样就可以得到解决 就是方法里不写任何代码 把此方法改为可以重写的就行了(不过只局限于继承)但是还有一点。。 我希望改此属性之后执行此方法一次以上呢??
事件+= 就解决了