0

我对 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;
        }

    }
4

4 回答 4

2

方法一

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

关于

方法二

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

所以很明显,Method1会更有效


也看看这些链接:铸造有多昂贵,类型转换的性能

于 2013-01-26T13:12:26.847 回答
2

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

于 2013-01-26T13:15:31.060 回答
1

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

于 2013-01-26T20:17:27.073 回答
1

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

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

如果您稍后重构代码,它将为您节省很多时间:)

于 2013-01-26T13:17:12.553 回答