如何使用索引编号创建对象

问题描述:

我想让我的程序变得更短,那么它就是现在。 我做了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?它是一类资源还是属性? –

如果您保留一组子数据(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