c# - 类内对象的列表或字典
问题描述
我和一个朋友(都是编程新手)争论在包含该类所有实例的类中包含字典是否明智。
我说字典在主目录中而不是在课堂本身中会更好。
我没有充分的理由说明原因,但我从未见过类保存已创建对象的记录。
你能告诉我每种方法的优缺点吗?
提前致谢。
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);
}
}
解决方案
这主要取决于您的需求和您的架构/设计偏好。
将字典放在类中可以很好地封装所有与类相关的逻辑。这样,您可以对类用户隐藏(静态)字典,并由您的类在内部对其进行管理。
将字典放在课堂之外可以使该机制在其他方面具有灵活性。例如,您可以为您的类实例管理多个不同的字典(用于多种目的)。或者,如果您在特定的解决方案环境中不需要它,您可以将这样的字典放在一边。
恕我直言,没有严格的指导方针告诉你应该或不应该做一些具体的事情。只要有创意。只要最终结果清晰、可维护、可扩展等,天空就是极限。
推荐阅读
- docker - WixToolset 不能安装在具有 windows/servercore 基础映像的 windows 容器中
- oracle-data-integrator - 有没有一种方法可以在 ODI 元数据数据库中的某处找到数据存储对象上的强制执行上下文?
- spring-boot - 如何修复 XXX:jar:1.0 的 POM 丢失,没有可用的依赖信息
- tomcat - 如何在servlet容器(tomcat)中运行wiremock
- hyperledger-fabric - 生产模式下的 Hyperledger Fabric SDK 连接配置文件配置
- python - 在 Alexa Skills Kit 中了解插槽并获取其值
- javascript - 我如何检查字段是否填充了科尔多瓦/角度
- kubernetes - 在 pod 定义中使用图像哈希而不是标签
- python - 当地图在pygame中移动时用鼠标找到一个项目
- python - 如何在 python openshift rest 客户端中使用 load_incluster_config 时修复“没有这样的文件或目录:'/home/jenkins/.kube/config'”