0

2つのテキストボックスに同じTextChangedイベントハンドラーを使用したので、パフォーマンスが向上したのでしょうか、それとも読みやすさの問題でしょうか。

方法1

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

方法2

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

方法1

彼らは直接的であり、そのコントロールについても彼らが応答していることを知っているので、より良いでしょう

それにかんする

方法2

sender(オブジェクト)がTextBoxにキャストされ、switchステートメントがコントロールの操作を決定するたびに。

Method1ですから、より効果的になることは明らかです


これらのリンクもご覧ください:キャストの費用、型キャストのパフォーマンス

于 2013-01-26T13:12:26.847 に答える
2

理論的には、最初の方法の方が高速です。実際には、違いに気付くことはありません。ハンドラーが大量のコードを共有している場合switchは、を使用することでコードの重複を減らすことができます。

于 2013-01-26T13:15:31.060 に答える
1

パフォーマンスに違いはありません!!!!!!

于 2013-01-26T20:17:27.073 に答える
1

パフォーマンスの違いはありません。また、2つのテキストボックスに共通の機能がある場合、または同じ方法でチェックする必要がある場合は、2つのテキストボックスに1つのハンドラーを設定しても問題はありません。改善できることは、テキストボックスを文字列名でチェックしないで、次のような変数名を使用することをお勧めします。

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

後でコードをリファクタリングすると、時間を大幅に節約できます:)

于 2013-01-26T13:17:12.553 に答える