2017-05-31 23 views
1

自分のプログラムを短くしたいと思っています。 私は8種類のオブジェクトを作ってそれらを使っていますが、forループとインデックス番号のようなもので作っていきたいと思います。 これを行う方法はありますか?私はそれを見てきましたが、何も見当たりません。インデックス番号を使用してオブジェクトを作成する方法

オブジェクトなどはオランダ語であり、申し訳ありません。

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

kind2.naamは何ですか?クラスのリソースまたはプロパティですか? –

答えて

1

子配列(kind)を保持している場合は、インデックスで配列にアクセスできます。

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

別のオプションは、その使用方法に似た構文を持つことになり、リスト、だろうが、あなたは動的にリストから項目を追加および削除することができます

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

あなたのコードで同様の目的で使用される同様のインスタンスがある場合は、個々の変数(kind1、kind2など)を持たずに何らかのコレクションを保持するほうがほぼ確実です。 – Neil

+0

もちろん、これらの変数はそこにあるので、彼はある場所でそれを加えなければなりません。 –

+0

私はあなたの解決策に同意しています。リファクタリングは、メソッドだけでなく、変数に対しても実行する必要があります。 – Neil

関連する問題