0

Let's say I have the following code:

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

Is it somehow possible to minimize that code?

For example Change "st1.Add(str)" to something like "st".Add(str).

The only difference between those buttons is the list name where the information is stored. Everything else is equal.

vigri
  • 475
  • 1
  • 5
  • 16
  • I believe this would be more suitable here: http://codereview.stackexchange.com/ This isn't really a problem, just an optimization. – walther Feb 22 '13 at 17:45

3 Answers3

2

You need to use a Dictionary<String, List<String>>.

In your constructor (or other initializationary area), add a new List<string>() for each key that you need.

You can then write

 dict[someKey].Add(something);
SLaks
  • 868,454
  • 176
  • 1,908
  • 1,964
1

Well if these are all in the same class, you can just use:

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

If that doesn't work for you, please give details as to why it wouldn't work.

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194
1

Hard to say without knowing the type of st1, st2, etc. but something like this?

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);
}
D Stanley
  • 149,601
  • 11
  • 178
  • 240