2011-04-22 51 views
2

我在.NET应用程序中有一个函数,它对文件集合进行操作并将一些文件写入磁盘。我想返回已写入磁盘的文件名的集合。我要处理的所有返回的集合是循环遍历每个集合并对该文件执行操作。我最初以为在这种情况下String数组是最好的,但我想在这里可能会问,以防另一个结构可能更好。例如,如果我只是循环浏览集合,那么LIST<String>会过度杀伤?我正在使用VB.NET编写函数,但C#示例也很好。谢谢。是一个字符串数组是否可以传回一个函数中的值集合的好结构?

回答

5

如果您真正需要做的就是遍历结果,从函数返回IEnumerable<string>就足够了。

这可以防止将调用者耦合到任何特定的数据结构......他们需要的东西都是可以迭代的东西。然后,你的实现可以自由使用,并返回任何结构是合理的 - 一个List<string>,一个HashSet<string>,一个string[] ......它并不重要。实际上,如果您需要,您可以自由创建除简单列表之外的数据结构 - 只要它实现IEnumerable<string>接口,您的呼叫者不受影响。

我认为需要考虑的另一个问题是数组是否是一个内部使用来建立一组文件名的好结构。是一个固定大小但可变的集合真的是您的操作的最佳构造?通常,这些操作不知道它们将操作多少个项目 - 在这种情况下,可变尺寸的集合(如List<>HashSet<>)更有意义。那么为什么要将这样一个集合转换成一个数组而仅仅为了返回而花费呢?

+0

我真的很喜欢你在最后一段中说的话。你说得好,我可能没有固定数量的文件名。谢谢。 – webworm 2011-04-23 00:09:37

2

右出框架设计准则 - 卡萨和Hejlsberg

8.1 “身高:使用集合到阵列的公共API”

8.3.3 “身高:收藏过阵”

但是

考虑使用低级别API中的数组来mi最大限度地减少内存消耗并最大限度提高性能(也是8.3.3的一部分)

相关问题