【问题标题】:Elegant way to manage a lot of fields of the same type管理大量相同类型字段的优雅方式
【发布时间】:2013-03-20 16:48:24
【问题描述】:

我有一个包含很多列表的类:

private List<MyClass> m_List1;
private List<MyClass> m_List2;
private List<MyClass> m_List3;
private List<MyClass> m_List4;
...
private List<MyClass> m_ListN;

一切都很好,但是代码在某种程度上变得难以阅读和编写......尤其是当我需要在需要时实例化这些列表或将它们全部清除时。

你能建议我一个好的和优雅的解决方案来更好地管理它们吗?我正在考虑一个Dictionary&lt;String, List&lt;MyClass&gt;&gt;,它可以充当我所有列表的一种“包装器”,或者更好的是,一个具有内部Dictionary&lt;String, List&lt;MyClass&gt;&gt; 的类,它公开了一个方法ClearAll(),例如...... 这种情况下,我应该如何处理列表替换、清理、处置等?假设我的包装器中有以下代码...

public void Assign(String key, List<MyClass> value)
{
    m_InternalDictionary[key] = value;
}

如果该键上已经存在另一个列表,我应该先清除它,然后再用另一个列表替换它吗?

还有什么建议吗?

【问题讨论】:

  • 列表数组怎么样? List&lt;MyClass&gt; [] m_Lists ?
  • Dictionary&lt;string, List&lt;MyClass&gt;&gt; 或者,由于字段名称相差一个数字,即使是 List&lt;List&lt;MyClass&gt;&gt; 似乎也是可行的方法。
  • List&lt;List&lt;MyClass&gt;&gt; m_Lists; 有什么问题?您如何使用这些列表以及您希望包装器提供哪些功能?
  • 我支持 Dictionary 的想法,因为他可能想对特定列表做一些事情,并且使用它更容易到达myDictionary["m_List1"]
  • (一般来说,当你有“很多相同类型的X”时,你应该立即想到一个集合。)

标签: c# .net list collections dictionary


【解决方案1】:

有什么理由需要单独的列表吗?为什么不在你的班级里有一个成员是列表的列表?

private List<List<MyClass>> myClasses { get; set; }

【讨论】:

  • 问题是每个列表在我的代码中都有不同的角色,或者在不同的函数中使用。这就是为什么列表列表不起作用的原因。我必须在那一刻准确地恢复那个列表......不是随机的或索引的。
  • 都是MyClass吗?还是它们是 MyClass 的子类型?如果是这种情况,您可以生成一个以类型为键的字典。否则,我想你可以使用带有字符串键的字典,但似乎有更好的方法来做你想做的事。但是,如果没有更多细节,很难为您提供更好的解决方案。
  • 我的列表中只使用了 MainClass。
猜你喜欢
  • 2016-01-11
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多