【问题标题】:Which implementation of event handler give more performance?哪个事件处理程序的实现可以提供更高的性能?
【发布时间】:2013-01-26 13:10:03
【问题描述】:

我为 2 个文本框使用了相同的 TextChanged 事件处理程序,所以它们是否有任何性能改进或者只是可读性问题?

方法一

private void txtcode_TextChanged(object sender, EventArgs e)
        {
        //Some code
        }
private void txtname_TextChanged(object sender, EventArgs e)
        {
        //Some code
        }

方法二

private void txt_TextChanged(object sender, EventArgs e)
    {
        TextBox txtbx = (TextBox)sender;
        switch (txtbx.Name)
        {
            case "txtname":
                //Some code
                break;

            case "txtcode":
                //Some code
                break;

            default:
                break;
        }

    }

【问题讨论】:

  • 你有性能问题吗?
  • IMO,如果您使用 2 个文本框,您不应该遇到性能问题
  • 对我来说听起来像是微优化。除非你的 switch 语句中有 1048576 种不同的情况,否则我什至不会考虑性能和可读性。
  • 它们之间的差异将是完全无法衡量的。
  • 如果 (1) 您没有性能问题并且 (2) 您没有测量,那么请始终使用最易读的代码。

标签: c# performance event-handling


【解决方案1】:

方法一

会更好,因为他们是直接的并且知道他们也响应控制

关于

方法二

每次将 sender(object) 强制转换为 TextBox,然后 switch 语句决定控件上的操作。

所以很明显,Method1 会更有效


也看看这些链接:How expensive is Casting, Performance of Typecasting

【讨论】:

    【解决方案2】:

    理论上,第一种方法更快。实际上,您不会注意到任何差异。如果您的处理程序共享大量代码,则使用switch 是减少代码重复的完全可接受的方式。

    【讨论】:

      【解决方案3】:

      没有性能差异。如果两个文本框有一些共同的功能或者应该以相同的方式检查,那么为两个文本框设置一个处理程序也没有错。您可以改进的是 - 不要通过字符串名称检查文本框,最好使用它们的变量名称,例如:

      if(txtbx.Equals(txtcode))
           //...
      

      如果你稍后重构你的代码,它会节省你很多时间:)

      【讨论】:

        【解决方案4】:

        性能没有区别!!!!!!

        【讨论】:

          猜你喜欢
          • 2011-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多