2017-05-31 34 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