出于 XML 序列化的目的,我不得不解散我正在使用的 Dictionary 集合。我写了一个非常简单的替代方案,它由 2 个类组成:
- NameValueItem:包含名称(键)和值
- NameValueCollection:派生自 CollectionBase 并维护 NameValueItem 对象的集合。
我已经包含了一些标准方法来帮助维护集合(添加、包含和删除)。所以就像大多数字典类型一样,名称(或键)是唯一的:
public bool Contains(NameValueItem item)
{
foreach (NameValueItem lItem in List)
if(lItem.Name.Equals(item.Name))
return true;
return false;
}
Add 使用此 Contains 方法来确定是否将给定项目包含到集合中:
public void Add(NameValueItem item)
{
if (!Contains(item))
List.Add(item);
}
作为沼泽标准,这段代码看起来简单明了,但事实证明它有点迟钝。有什么可以做的来提高它的性能吗?或者我可以使用的替代品?
我正在考虑创建一个派生自 HashSet 的 NameValueHashSet。
可选的...:
我有一个问题,我打算在单独的线程中提出,但我会留给你来决定你是否愿意解决这个问题。
我想向 NameValueCollection、Names 和 Values 添加 2 个属性,它们从 NameValueItem 对象的集合中返回一个字符串列表。相反,我将它们构建到 GetNames() 和 GetValues() 方法中,因为我必须构建集合(即创建一个列表(名称/值),遍历集合,将名称/值添加到列表并返回列表)。
这是一个更好的选择吗?在良好的编码实践、性能等方面?由于我对属性的想法一直是尽可能地将其剥离,因此应该只存在引用、算术等,没有任何层级的过程。如果是这样的话,那么它应该被内置到一个方法中。想法?