我在.NET应用程序中有一个函数,它对文件集合进行操作并将一些文件写入磁盘。我想返回已写入磁盘的文件名的集合。我要处理的所有返回的集合是循环遍历每个集合并对该文件执行操作。我最初以为在这种情况下String数组是最好的,但我想在这里可能会问,以防另一个结构可能更好。例如,如果我只是循环浏览集合,那么LIST<String>
会过度杀伤?我正在使用VB.NET编写函数,但C#示例也很好。谢谢。是一个字符串数组是否可以传回一个函数中的值集合的好结构?
2
A
回答
5
如果您真正需要做的就是遍历结果,从函数返回IEnumerable<string>
就足够了。
这可以防止将调用者耦合到任何特定的数据结构......他们需要的东西都是可以迭代的东西。然后,你的实现可以自由使用,并返回任何结构是合理的 - 一个List<string>
,一个HashSet<string>
,一个string[]
......它并不重要。实际上,如果您需要,您可以自由创建除简单列表之外的数据结构 - 只要它实现IEnumerable<string>
接口,您的呼叫者不受影响。
我认为需要考虑的另一个问题是数组是否是一个内部使用来建立一组文件名的好结构。是一个固定大小但可变的集合真的是您的操作的最佳构造?通常,这些操作不知道它们将操作多少个项目 - 在这种情况下,可变尺寸的集合(如List<>
或HashSet<>
)更有意义。那么为什么要将这样一个集合转换成一个数组而仅仅为了返回而花费呢?
2
右出框架设计准则 - 卡萨和Hejlsberg
8.1 “身高:使用集合到阵列的公共API”
8.3.3 “身高:收藏过阵”
但是
“考虑使用低级别API中的数组来mi最大限度地减少内存消耗并最大限度提高性能(也是8.3.3的一部分)
相关问题
- 1. 传递字符串函数并返回一个结构
- 2. 需要传递一个字符串数组到一个集合
- 3. numpy vectorized:检查数组中的字符串是否以另一个数组中的字符串结尾
- 4. 是否可以将字符串数组转换为一个字符串?
- 5. 是否可以从Sybase函数返回一个数字列表?
- 6. 是否有一个数据结构可以保存.NET中的数据集?
- 7. 我应该从函数中返回一个数组还是一个集合?
- 8. 是否有一个本地php函数来查看一个值的数组是否在另一个数组中?
- 9. 函数来确定一组是否是另一个的子集
- 10. 确定是否可以从另一个字符串中的字符子集创建一个字符串
- 11. ng-list可以返回一个数字而不是字符串数组吗?
- 12. 检查一个字符串是否可以由Javascript中另一个字符串中的字符组成
- 13. ANSI C - 函数是否可以返回另一个函数?
- 14. 遍历一个数组,并检查值中的一个是一个字符串
- 15. C中传递一个字符串函数,那么返回一个字符串
- 16. 是否可以使用一个替换函数来替换一个字段中的多个字符串?
- 17. 是否有函数来测试一个字符串变量是否是一个数值?
- 18. 是否有一个相当于python中非唯一集合的数据结构?
- 19. 如何从一个mongodb集合函数返回一个字符串值而不是Json
- 20. 是否有一个函数将EXCEPTION_POINTERS结构转换为字符串?
- 21. 是否可以构造一个“无限”字符串?
- 22. 复制一个字符串转换成一个结构数组
- 23. 字符串集合的数据结构
- 24. 检查一个字符串是否以PHP中的数字结尾
- 25. 将多个数组值组合成一个字符串值?
- 26. 查找一个字符串是否为另一个字符串的数据结构
- 27. 从一个函数返回一个广泛的结果(字符串值)
- 28. 是否可以在Go函数中返回结构的动态数组?
- 29. c传递一个字符串到函数然后返回一个字符串
- 30. 如何获得一个字符串是否是T-SQL中的一个数字
我真的很喜欢你在最后一段中说的话。你说得好,我可能没有固定数量的文件名。谢谢。 – webworm 2011-04-23 00:09:37