将事件组合到一个处理程序中,有效吗?

时间:2017-06-28 15:43:37

标签: c# performance hashcode

这个问题分为两部分。

  1. 每个对象具有一个特定于事件的函数或组合对象事件是否更好?如果是,
  2. 使用哈希码来定义发送方对象并进行比较以找出更新的内容是否有效?
  3. 以下代码示例。

    我的活动功能:

    private void GeneralEventHandler(object sender, EventArgs e){
            var senderHash = sender.GetHashCode();
    
            if (senderHash == tbDatabase.GetHashCode())
                Settings.DB.Default.Database = tbDatabase.Text;
            else if (senderHash == tbSchema.GetHashCode())
                Settings.DB.Default.Schema = tbSchema.Text;
    }
    

    我的对象定义:

        // tbDatabase
        / 
        this.tbDatabase.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
        this.tbDatabase.Location = new System.Drawing.Point(62, 3);
        this.tbDatabase.Name = "tbDatabase";
        this.tbDatabase.Size = new System.Drawing.Size(210, 20);
        this.tbDatabase.TabIndex = 0;
        this.tbDatabase.LostFocus += new System.EventHandler(this.GeneralEventHandler);
        // 
        // tbSchema
        // 
        this.tbSchema.Location = new System.Drawing.Point(55, 3);
        this.tbSchema.Name = "tbSchema";
        this.tbSchema.Size = new System.Drawing.Size(217, 20);
        this.tbSchema.TabIndex = 1;
        this.tbSchema.LostFocus += new System.EventHandler(this.GeneralEventHandler);
    

    我主要只是用它来动态更新用户设置。我在退出时保存设置文件。

1 个答案:

答案 0 :(得分:3)

我更喜欢让每个对象都有自己的事件处理程序。每个处理程序依次调用一个“做行为”的方法,而不知道是谁调用它。如果几个对象“做同样的事情”让他们调用相同的“do-it”方法。

你永远不知道未来会带来什么 - 现在组合事件处理程序的对象可能会在将来需要做的事情上分歧。