从方法中返回字典

时间:2011-06-17 13:32:56

标签: c# generics collections coding-style

这些类型的方法一直困扰着我。没有深入研究代码,我不知道这个字典中的键或子值应该是什么。我已经做了大约一千次,我敢肯定。但它一直困扰着我,因为它缺乏如此多的信息。

IDictionary<int,HashSet<int>> GetExportedCharges()
{
    ...
}

void GetVisitStatuses(IDictionary<int,HashSet<int>> exportedCharges)
{
    ...
}

将材料放在字典中是有意义的,但所有IDictionary方法都有非常抽象的参数。我想我可以创建一个新类,实现IDictionary,并重命名所有参数。这看起来有点矫枉过正。希望c#有一个'typdef'指令。

你如何避免回复这样的词典?或者你完全避免这种情况?

2 个答案:

答案 0 :(得分:9)

您可能会发现一个非常简单的解决方案:

public class IdToSetOfWidgetNumbersMap : Dictionary<int,HashSet<int>> { }

优点:

  • 看到返回IdToSetOfWidgetNumbersMap的方法并没有留下很多问题
  • 该类可以完全为空,或者如果您愿意,可以选择为Dictionary公开的成员提供别名

缺点:

  • 您需要为每种类型的字典
  • 创建一个do-nothing类

答案 1 :(得分:0)

就个人而言,我不会避免返回词典。

我同意,只有方法签名,它看起来都很模糊。因此,我的规则是始终以“字典(键的逻辑描述) - (值的逻辑描述)”样式编写注释。并希望我不需要使用像

这样可怕的东西
Dictionary<SomeType, <Dictionary<...>>