首页 > 解决方案 > 类内对象的列表或字典

问题描述

我和一个朋友(都是编程新手)争论在包含该类所有实例的类中包含字典是否明智。

我说字典在主目录中而不是在课堂本身中会更好。

我没有充分的理由说明原因,但我从未见过类保存已创建对象的记录。

你能告诉我每种方法的优缺点吗?

提前致谢。

A:

    class Table
    {
      public static Dictionary<int,Table> Tables = new Dictionary<int, Table>();
     ...
     public table (int ID)  // constructor
     {
      ...
      Tables.Add(ID,this);
     }   
    }

乙:

     class Program
     {
      public Dictionary<int,Table> Tables = new Dictionary<int, Table>();
      static void Main(string[] args)
      {
       ...
       Table A = new Table (10);
       Tables.Add(10,A);
       }
      }

标签: c#listdictionary

解决方案


这主要取决于您的需求和您的架构/设计偏好。

将字典放在类中可以很好地封装所有与类相关的逻辑。这样,您可以对类用户隐藏(静态)字典,并由您的类在内部对其进行管理。

将字典放在课堂之外可以使该机制在其他方面具有灵活性。例如,您可以为您的类实例管理多个不同的字典(用于多种目的)。或者,如果您在特定的解决方案环境中不需要它,您可以将这样的字典放在一边。

恕我直言,没有严格的指导方针告诉你应该或不应该做一些具体的事情。只要有创意。只要最终结果清晰、可维护、可扩展等,天空就是极限。


推荐阅读