我在想,如果像下面一样就完成了当姓名修改时就执行方法,很像是名称被改变的事件,这样的话,为何还要使用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);
}

解决方案 »

  1.   

    把这个看懂
    http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html你就明白到底事件有什么作用,,,里面讲得很详细.也很通俗...我也是刚学,看了里面的教程,很有帮助....
      

  2.   

    public   void   OnNameChanged(object   sender,   myEventArgs   e) 

        Console.WriteLine("{0}名字已经改变为{1}",   e.oldName,   e.newName); 
    }比如在命令提示符下执行赋值操作 可能会输出:张三名子已经改变为李四
      

  3.   

    张子阳的我看过了,他偏在于委托.实际上完全可以不用event来实现事件.单独使用委托也可以.我最上面的代码都没有用代理也照样实现了事件的功能.我只是想知道event到底有哪些好处,以致于我们要使用它,谢谢.
      

  4.   

    如果保存进数据库,我们只要改变OnNameChanged方法就行啦,用事件还不一样要改嘛,呵...我觉得这和重用的关系不大,也许和委托一次可以响应多个方法.不过如果我的事件只对应一个方法时,我不知道声明event的用处到底在哪里.
      

  5.   

    event和delegate是分不开的.event你可以理解为一个链表,里面包含了发生事件时需要调用的方法.
    delegate就是函数指针,声明了处理这个事件的方法原型应该是什么.你的代码并没有错,也实现了某些事件的效果,但是,你的代码不具备任何扩展性.我们知道,很多时候,事件是提供给其他模块使用的. 比如,当按键按下时, 我们需要做些事.分析一下,是微软写的Button发生了一些事, 而具体干什么事,是我们自己写代码决定, 比如,跳出个警告框什么的.我们假设用你的办法, 我是另外一个开发人员, 我想名称改变时做些事. 
    那么, 我必须告诉你: 小王, 我想怎么怎么样,你帮我改一下你的OnNameChanged方法.
    OK, 几个人还好, 几十个人呢? 别人都嚷嚷着: 小王!帮我改一下你的OnNameChanged方法, 我要做些事!
    别人想做点什么事,每次要你该代码,重新编译.
    如果别人找不到你,怎么办? 
    这样的程序, 能用吗?如果你使用事件, 别人不需要你小王做任何事, 他们只需要再自己的代码里面写OnNameChanged+=new delegate(MyOwnMethod);
    就可以高枕无忧.孰优孰劣, 我想你应该明白了
      

  6.   

    路过,学习ing~~
    shrinerain讲的真是深入浅出,通俗易懂:)
      

  7.   

    建议去买一本金旭亮的《.NET 2.0面向对象编程揭秘》,这本书对委托、事件、多线程等讲的很详细
      

  8.   

    http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html 
    shrinerain  解释的很通俗
    up~~
      

  9.   

    shrinerain说的不错!
    不过 如果是继承而不是实例,那样就可以得到解决  就是方法里不写任何代码 把此方法改为可以重写的就行了(不过只局限于继承)但是还有一点。。 我希望改此属性之后执行此方法一次以上呢??
    事件+= 就解决了 
      

  10.   

    shrinerain也许说的不错啊,结分了.
      

  11.   

    请问一下,不用Event,不是也可以 OnNameChanged+=new delegate么?