2017-05-31 2 views
1

Ich möchte mein Programm machen, dass ich kürzer gemacht habe, als es jetzt ist. Ich mache 8 verschiedene Objekte und mache Dinge mit ihnen, aber ich möchte es mit etwas wie eine for-Schleife und eine Indexnummer machen. Gibt es eine Möglichkeit, dies zu tun, weil ich nachgeschlagen habe, aber nichts zu finden scheint.Wie mache ich Objekte mit einer Indexnummer

Die Objekte und solche sind in Niederländisch sorry dafür.

private void AankomstButton_Click(object sender, EventArgs e) 
    { 
     if (welkKind == 1) 
     { 
      if (File.Exists(@"Bestanden/" + kind1.Naam + "_" + DateTime.Now.ToString("Y") + ".txt") == false) 
      { 
       using (StreamWriter sw = new StreamWriter(@"Bestanden/" + kind2.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) ; 

      } 
      else 
      { 
       using (StreamWriter sw = File.AppendText(@"Bestanden/" + kind2.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 

        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       }     

      } 
     } 


     if (welkKind == 2) 
     { 
      if (File.Exists(@"Bestanden/" + kind2.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
      { 
       using (StreamWriter sw = File.AppendText(@"Bestanden/" + kind2.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
      else 
      { 
       using (StreamWriter sw = new StreamWriter(@"Bestanden/" + kind2.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
     } 
     if (welkKind == 3) 
     { 
      if (File.Exists(@"Bestanden/" + kind3.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
      { 
       using (StreamWriter sw = File.AppendText(@"Bestanden/" + kind3.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
      else 
      { 
       using (StreamWriter sw = new StreamWriter(@"Bestanden/" + kind3.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
     } 
     if (welkKind == 4) 
     { 
      if (File.Exists(@"Bestanden/" + kind4.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
      { 
       using (StreamWriter sw = File.AppendText(@"Bestanden/" + kind4.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
      else 
      { 
       using (StreamWriter sw = new StreamWriter(@"Bestanden/" + kind4.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
     } 
     if (welkKind == 5) 
     { 
      if (File.Exists(@"Bestanden/" + kind5.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
      { 
       using (StreamWriter sw = File.AppendText(@"Bestanden/" + kind5.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
      else 
      { 
       using (StreamWriter sw = new StreamWriter(@"Bestanden/" + kind5.Naam + "_" + DateTime.Now.ToString("Y") + ".txt")) 
       { 
        sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
       } 
      } 
     } 
+0

Was kind2.naam ist? Ist es eine Ressource oder Eigenschaft einer Klasse? –

Antwort

1

Wenn Sie ein Array von Kindern (kind) halten, können Sie das Array zugreifen, indem Index.

Kind[] children = new Kind[] { kind1, kind2 }; 

if (welkKind >= 0 && welkKind < children.Length) 
{ 
    Kind kind = children[welkKind]; 

    string fileName = @"Bestanden/" + kind.Naam + "_" + DateTime.Now.ToString("Y") + ".txt"; 
    if (File.Exists(fileName)) 
    { 
     using (StreamWriter sw = new StreamWriter(fileName)) 
     { 
      sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
     } 
    } 
    else 
    { 
     using (StreamWriter sw = File.AppendText(fileName)) 
     { 
      sw.WriteLine(DateTime.Now.ToString("d") + " Aangekomen: " + DateTime.Now.ToString("t")); 
     } 
    } 
} 

wäre eine weitere Option, um eine Liste sein, die ähnliche Syntax in seiner Verwendung haben würde, aber Sie können Elemente aus der Liste dynamisch hinzufügen und entfernen:

List<Kind> children = new List<Kind>(); 
children.Add(kind1); 
children.Add(kind2); 
children.Add(new Kind() { Naam = "John" }); 

if (welkKind >= 0 && welkKind < children.Count) 
{ 
    Kind kind = children[welkKind]; 
} 
+0

Wenn ähnliche Instanzen für ähnliche Zwecke in Ihrem Code verwendet werden, ist es fast sicher besser, sie in einer Art Sammlung zu halten, anstatt einzelne Variablen (kind1, kind2 usw.) zu verwenden. – Neil

+0

Natürlich, aber diese Variablen sind jetzt da, also muss er dann an irgendeiner Stelle hinzufügen. –

+0

Ich stimme Ihrer Lösung zu. Das Refactoring muss auch für die Variablen durchgeführt werden, nicht nur in der Methode. – Neil

Verwandte Themen