3

在编写对可能无限的数据“流”(即字节、字符等)进行操作的函数时,在决定使用字符串/数组与流进行输入/输出时,有哪些设计考虑因素?

总是编写函数以使用流,然后制作使用流包装器(即 StringReader/Writer)的重载方法来返回“简单数据”,如不需要处理和其他考虑的数组或字符串,是否会对性能产生巨大影响?

我认为在数组上操作的函数要方便得多,因为您可以“返回”结果数组,而且您通常不必担心处理。我认为流操作符很好,因为它们可以对无限的数据源进行操作,而且可能还可以节省内存。

4

2 回答 2

1

如果您正在处理未知大小的二进制数据,请始终使用流。例如,如果可以避免,将整个文件读入字节数组通常是个坏主意。.Net 中大多数处理二进制数据的函数(例如加密和压缩)都是为使用流作为输入/输出而构建的。

于 2012-05-06T21:01:57.660 回答
1

如果您正在编写一个函数来处理数据流,那么为什么不将它作为IEnumerable<T>. IEnumerable<T>然后,您可以在生成器函数中将流作为 an 返回。换句话说,return yield用于一次返回每个结果。

在某些情况下,由于评估是根据需要完成的,因此您最终可能会获得性能的渐近改进。

于 2012-05-06T21:20:33.617 回答