0

次のコードがあるとします。

private void btnArr1(object sender, EventArgs e)
{
    wr("test string1","st1");
}
private void btnArr2(object sender, EventArgs e)
{
    wr("test string2","st2");
}
private void btnArr3(object sender, EventArgs e)
{
    wr("test string3","st3");
}

private void wr(String str, String st){
    switch(st){
        case "st1":{
            st1.Add(str);
            break;
        }
        case "st2":{
            st2.Add(str);
            break;
        }
        case "st3":{
            st3.Add(str);
            break;
        }
    }       
}

そのコードを最小限に抑えることは何とか可能ですか?

たとえば、「st1.Add(str)」を「st」.Add(str) のように変更します。

これらのボタンの唯一の違いは、情報が保存されるリスト名です。他のすべては等しいです。

4

3 に答える 3

2

を使用する必要がありますDictionary<String, List<String>>

コンストラクター (またはその他の初期化領域) で、new List<string>()必要な for each キーを追加します。

その後、書くことができます

 dict[someKey].Add(something);
于 2013-02-22T17:44:43.280 に答える
1

これらがすべて同じクラスにある場合は、次を使用できます。

private void btnArr1(object sender, EventArgs e)
{
    st1.Add("test string1");
}

private void btnArr2(object sender, EventArgs e)
{
    st2.Add("test string2");
}

private void btnArr3(object sender, EventArgs e)
{
    st3.Add("test string3");
}

それがうまくいかない場合は、うまくいかない理由を詳しく教えてください。

于 2013-02-22T17:44:27.550 に答える
1

st1、などの種類が分からないとなんとも言えませんst2が、こんな感じでしょうか?

private void btnArr1(object sender, EventArgs e)
{
    wr("test string1",st1);
}
private void btnArr2(object sender, EventArgs e)
{
    wr("test string2",st2);
}
private void btnArr3(object sender, EventArgs e)
{
    wr("test string3",st3);
}

private void wr(String str, List<string> st){
     st.Add(str);
}
于 2013-02-22T17:45:42.970 に答える