我正在开发一个C#项目,它要求我跟踪我定义的各种类对象...例如,class1,class2等。这些类中的每一个都有一个被定义为Guid的id
我目前跟踪我创建的所有这些对象的方法是将它们存储到Hashtable中。以下是我正在做的事情的样本。
Hashtable c1_db = new Hashtable();
Hashtable c2_db = new Hashtable();
// class 1
Class1 c1_1 = new Class1(..);
Class1 c1_2 = new Class1(..);
// add class1 objects to database
c1_db.Add(c1_1.id, c1_1);
c1_db.Add(c1_2.id, c1_2);
// class 2
Class2 c2 = new Class2(..);
c2_db.Add(c2.id, c2);
所以,基本上我使用每个Guid作为Hashtable键,以便稍后在我需要检索我的对象时进行查找。
我的问题是关于我在这里的实现......这是处理多个对象的好方法吗?我是C#/ OOP的新手,所以我确信有更好的方法可以做到这一点......但这似乎是一种快速/简单/快速的方式来管理内部数据。
答案 0 :(得分:3)
根据我的经验,这种方法没有任何内在错误。我过去也用过它。但是你可能想要使用Dictionary<TKey, TValue>
,因为在这种情况下类型安全。使处理比非通用哈希表更容易。
答案 1 :(得分:2)
此代码没有任何问题。问题是它应该解决什么问题。如果你解释实际应该实现什么,你只能谈论好/坏的解决方案。
答案 2 :(得分:1)
与约翰内斯·罗塞尔(JohannesRössel)达成一致,使用哈希表是一个好主意,但如果能够使其类型安全,那就更好了。
使用的起始策略如下:
由于您要跟踪的每个对象都包含GUID,因此创建一个基类或接口类,其成员GUID为类成员,这将允许您创建
Dictionary<GUID, iTrackedClass>
没有任何问题。
我经常使用的其他东西,就是将字典本身传递给对象的构造函数,并在对象中自动将对象添加到字典中,以保持代码的封装。如果您不希望将代码添加到列表中,只需发送一个null并检入构造函数。