变量列表名称(优化/最小化代码)

时间:2013-02-22 17:42:32

标签: c# minimize

假设我有以下代码:

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)。

这些按钮之间的唯一区别是存储信息的列表名称。其他一切都是平等的。

3 个答案:

答案 0 :(得分:2)

您需要使用Dictionary<String, List<String>>

在构造函数(或其他初始化区域)中,为您需要的每个键添加new List<string>()

然后你可以写

 dict[someKey].Add(something);

答案 1 :(得分: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");
}

如果这对您不起作用,请详细说明为什么它不起作用。

答案 2 :(得分:1)

很难说不知道st1st2等的类型,但是这样的话呢?

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);
}