zoukankan      html  css  js  c++  java
  • 今天对于自定义事件与方法的区别有了一点感性的认识

    从刚开始学.net没多久,就开始关注自定义事件、委托等知识点。

    由于做的项目一直比较小,这些知识点也就一直没有怎么用,所以一直是抹零两可的。

    以前网上查到的资料都是过于理论化,比如说:事件可以把方法做为参数传递,事件只声明了要调用方法(具体调用哪个不确定)等等

    --------------------------------------------------------------------------------------------------------------------------

    今天在网上找资料复习一下类的继承,看的例子中使用了自定义事件,而且是一个很简单的自定义事件。
    整理以后的代码如下:

        protected void Page_Load(object sender, EventArgs e)
        {
            book b 
    = new book();
            b.RenChenged 
    += new book.RenChengHender(b_RenChenged);

            Response.Write(b.Price.ToString());
        }

        
    private class book
        {
            
    public delegate void RenChengHender();   //定义一个委托
            public event RenChengHender RenChenged;  //定义一个事件

            
    private float price = 1;
            
    public float Price
            {
                
    get
                {
                    RenChenged();
    //如果读取这个值,将激发事件
                    return price; 
                }
            }
        }

        
    private void b_RenChenged()
        {
            Response.Write(
    "读取了价格<br />");
        }

    现在问题出现了,在上面的例子中,我完全可以不用这么麻烦使用自定义事件,而直接在Price属性get的时候调用b_RenChenged()方法,这样不是更简单吗?

    这个是很多时间以来一直困扰我的一个问题。

    忽然之间,我今天突然想明白了,就以上这个功能实现来说,的确两种方法的结果是一样的,似乎直接调用b_RenChenged()方法比用自定义事件要简单。

    但是,我认为区别就在于:当Price属性get的时候,是由谁来指定使用b_RenChenged()方法的?

    如果说,整个代码只由一个人来写,不考虑其他因素,上面当然可以直接调用b_RenChenged()方法。

    但如果,写Book类的人是Mr.A,而负责写Page_Load代码的人是Mr.B。Mr.A只管设计当Price属性被get的时候,能触发一个事件,事件具体是做什么他不管。而Mr.B只需要了解,当get Price的时候执行什么方法,而不去管其内在的实现(就比如,我们常用的 protected void Button1_Click(object sender, EventArgs e)只管用,不用了解它是如何工作的)

    这样一来,似乎一切就很明白了,他们最主要的区别除了文章开始时提到的一些之外,就是触发事件人的不同有了分工。希望可以给像我一样,分不清两者关系的人,一些帮助。


  • 相关阅读:
    idea websitehttp://www.youyur.com/
    chromium project相关页面
    WebKit Remote Debugging
    天兰尾货
    GitCookbook from google chromium
    ocr识别
    Google发布Chrome官方扩展DOM Snitch 可发现网页代码漏洞
    WebKit2 High Level Document ¶
    Phantom JS: an alternative to Selenium
    Python Extension
  • 原文地址:https://www.cnblogs.com/yeagen/p/1411193.html
Copyright © 2011-2022 走看看