2012-08-09 48 views
1

我正在尝试开发一个Windows窗体应用程序,其中用户将设置未知数量的“子类别”。我怎样才能自动命名这些新的实例。为一个类命名未知数量的新实例

在情况下,它可以帮助这里是我打算

private class Category 
{ 
    int numberOfCategories = 0; 

    Category(int categoryNumber) 
    { 
     numberOfCategories = categoryNumber; 

     for (int i = 0; i <= numberOfCategories; ++i) 
     { 
      SubCategory *automateThis* = new SubCategory(); 
     } 
    } 
} 
private class SubCategory 
{ 

谢谢。

+0

未使用的变量'automateThis'。你在做什么子类? – 2012-08-09 21:42:47

+0

从前两个答案中可以看出,您如何计划在以后访问您的SubCategories?这将决定要使用的数据结构,不管它是List还是Dictionary。例如,如果用户将自己命名SubCategories,那么以名称作为键的Dictionary可能会有用。 – Jeff 2012-08-09 21:47:26

回答

4

为什么要命名它们?它会产生另一个问题 - 你将如何访问它们? 更好的方法是创建集合List<SubCategory>,在这种情况下,您不必担心命名对象。

如果您想删除SubCategories - 您可以考虑使用Dictionary,其中字符串可能是SubCategory的唯一标识符。

+0

好点。好吧,这是有道理的。谢谢! – user1582483 2012-08-09 21:46:26

+0

我很高兴我能提供帮助。 – MaciekTalaska 2012-08-09 21:47:55

+0

好的电话@MaciekTalaska – 2012-08-09 22:03:20

0

制作SubCategory对象的list<>并使用i递增。

0

一个解决方案

private List<SubCategory> _subCategories = new List<SubCategory>(); 
private class Category 
{ 
    int numberOfCategories = 0; 

    Category(int categoryNumber) 
    { 
     numberOfCategories = categoryNumber; 

     for (int i = 0; i <= numberOfCategories; ++i) 
     { 
      _subCategories.Add(new SubCategory()); 
     } 
    } 
} 

,或者如果你想要一个名字,使用字典,你可以使用一个数组,或者一些其他聚合 。这个名字是什么?

在您发表评论后

什么时候?你在创建它们之前知道吗?你是从文件或数据库加载它们吗?

为什么你需要比具有Name属性的子类更多的空间?

+0

不管用户名是什么。 – user1582483 2012-08-09 21:58:08

+0

扩展答案 – 2012-08-09 22:38:29