【问题标题】:Creating a List of a class within the same class?在同一个类中创建一个类的列表?
【发布时间】:2020-06-23 20:36:35
【问题描述】:

我正在练习 C#,并且只学习了大约一个月。我有一个问题可能是初学者的问题,所以我希望有人不介意为我回答。

我有一个名为 yourCharacter 的类。在这个类中,包含有关某人角色的所有信息。我想让用户能够创建一个新角色,所以我创建了一个方法/函数来做到这一点。我的问题是,我可以在 yourCharacter 中放置一个创建 yourCharacter 列表的函数吗?这是可行的吗?这样做是不是很糟糕?我应该在我的主类中创建这个列表,然后在主类中调用一个函数来做到这一点吗?

我希望我的问题足够清楚,如果您需要更多详细信息,请告诉我。我想这样做的唯一原因是因为在我看来,将我的方法/函数与它正在操作和/或使用的类组合在一起更有意义。

class yourCharacter{

     //insert a bunch of variables here


     public static void newChar(){

          List newCharacter = new List<yourCharacter>();

     }
}

【问题讨论】:

  • 问问自己:为什么一个角色需要所有角色的列表?当您创建 2 个字符时,您最终会得到 2 个列表...3 个字符、3 个列表等。听起来其他实体应该管理字符列表。
  • 感谢约翰尼,这完全有道理!因此,如果我在主目录中创建它,然后从主目录中对其进行操作,我将永远只有 1 个列表,而不是用多个列表淹没 RAM。说得通!感谢您的回答!
  • 我不同意@JohnnyMopp .... 这完全正常,我一直这样做是为了创建树状数据结构和递归逻辑。我一直使用它来创建我事先不知道所有“分支”和每个分支的“深度”的树......如果我是你,我会研究递归。

标签: c# list class methods


【解决方案1】:

你所拥有的肯定是可行的。

一个类可以包含自己作为一个成员。在某些情况下这可能是有道理的,但请考虑一下您的情况,看看它是否适用。在您的情况下,您似乎正在尝试使用一种机制来对字符进行分组 - 但这不是一个好方法。为什么?继续阅读...

假设你有一个盒子。这个盒子里面装着另一个盒子……那个盒子里面可能装着另一个盒子…… 所以在那种情况下,如果我创建了一个代表这种盒子的类,那么将这个类添加到自身中可能是有意义的。 使这样的类代表现实中的系统,其中一个盒子包含其他盒子。

你试图抽象什么系统,以便一个字符包含其他字符是有用的? 我能想到一些事情:让我们想象一下你游戏中的一个角色可以吞下其他角色,他们会住在他的肚子里......

如果您想对它们进行分组 - 您可能希望使用另一个类来表示您的角色被分组的系统,如下所示: 假设你的游戏有一个冒险派对!冒险派对可以邀请其他人加入,一起去探险。假设这个冒险派对有一个领导者,他决定谁可以加入,谁不能加入。您仍然可能不会制作包含其他角色的角色...您宁愿创建一个名为“AdventureGroup”的类,其中包含“普通”党员和领导者的列表,您将分配一个代表“组昵称”的字符串",以及所有其他类型的事物,将群体表示为一个实体。类似的东西......你明白了。

【讨论】:

    猜你喜欢
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2019-11-15
    • 1970-01-01
    相关资源
    最近更新 更多