.net 字符串数组是从函数传回值集合的好结构吗?
我在.NET应用程序中有一个函数,它对一组文件进行操作,并将一些文件写入磁盘。我想返回已写入磁盘的文件名集合。对于返回的集合,我要做的就是遍历每个集合并对文件执行一个操作。我最初认为字符串数组在这种情况下是最好的,但我想我可以在这里问一下,以防另一种结构可能更好。例如,如果我只是在集合中循环,那么.net 字符串数组是从函数传回值集合的好结构吗?,.net,return-value,.net,Return Value,我在.NET应用程序中有一个函数,它对一组文件进行操作,并将一些文件写入磁盘。我想返回已写入磁盘的文件名集合。对于返回的集合,我要做的就是遍历每个集合并对文件执行一个操作。我最初认为字符串数组在这种情况下是最好的,但我想我可以在这里问一下,以防另一种结构可能更好。例如,如果我只是在集合中循环,那么列表会不会有些过分呢?我正在使用VB.NET编写函数,但C#示例也很好。谢谢。如果您真正需要做的只是迭代结果,那么从函数返回一个IEnumerable就足够了。 这可以防止调用方耦合到任何特定的数据结构
列表
会不会有些过分呢?我正在使用VB.NET编写函数,但C#示例也很好。谢谢。如果您真正需要做的只是迭代结果,那么从函数返回一个IEnumerable
就足够了。
这可以防止调用方耦合到任何特定的数据结构。。。它们所需要的只是可以迭代的东西。然后,您的实现就可以自由地使用和返回任何有意义的结构—一个列表
、一个哈希集
、一个字符串[]
。。。这并不重要。事实上,如果需要,您可以自由创建一个数据结构而不是一个简单的列表——只要它实现了IEnumerable
接口,您的调用者就不会受到影响
我想一个不同的问题是数组是否是一个好的结构,用于内部使用以建立一组文件名。对于您的操作来说,固定大小但可变的集合真的是最好的构造吗?通常,这样的操作不知道要对多少项进行操作——在这种情况下,可变大小的集合(如
List
或HashSet
)更有意义。那么,为什么仅仅为了返回这样一个集合而将其转换为阵列会产生成本呢?框架外设计指南-Icaza和Hejlsberg
8.1“更喜欢使用集合而不是数组作为公共API”
8.3.3“更喜欢收藏而不是阵列”
但是
“考虑在低级API中使用数组,以最小化内存消耗并最大限度地提高性能。”(也是8.3.3的一部分)我非常喜欢你在上一段中所说的话。你说得很好,我可能没有固定数量的文件名。非常感谢。