.net - 字符串数组是从函数传回值集合的好结构吗?

标签 .net return-value

我在 .NET 应用程序中有一个函数,它对一组文件进行操作并将一些文件写入磁盘。我想返回已写入磁盘的文件名集合。对于返回的集合,我要做的就是遍历每个集合并对文件执行操作。我最初认为 String 数组在这种情况下最好,但我想我可能会在这里问一下,以防其他结构可能更好。例如 LIST<String>如果我只是循环浏览集合,会不会太过分了?我正在使用 VB.NET 编写函数,但 C# 示例也很好。谢谢。

最佳答案

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

这可以防止将调用者耦合到任何特定的数据结构......他们所需要的只是可以迭代的东西。然后您的实现可以自由使用并返回任何有意义的结构 - List<string> , 一个 HashSet<string> , 一个 string[] ……其实没关系。事实上,如果需要的话,你可以自由地创建一个简单列表以外​​的数据结构——只要它实现了 IEnumerable<string>。调用者的界面不受影响。

我认为要考虑的另一个问题是数组是否是内部用于构建一组文件名的良好结构。固定大小但可变的集合真的是您操作的最佳构造吗?通常,此类操作不知道它们将对多少项进行操作 - 在这种情况下,可变大小的集合(如 List<>HashSet<> )更有意义。为什么会产生将此类集合转换为数组的成本,只是为了返回它?

关于.net - 字符串数组是从函数传回值集合的好结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760313/

相关文章:

javascript - 设置打印纸尺寸的最小高度?

java - 返回字符串数组的递归函数(JAVA)

return-value - 为什么语言不允许多个返回值?

c# - 由于挂起的数据库调用而取消线程

c# - 在 ASP.NET 中转换/访问 QueryString 值

c# - 如何在 IComparer.Compare 方法上将 'object' 转换为类类型

c# - 使用附加子句更新实体

c - Linux/bash 中程序返回值的有效范围是多少?

python 函数不返回列表

objective-c - 我如何从 object_getIvar(self, myIntVar) 获取 int 值,因为它返回一个指针