.Net流:返回vs提供

丹尼尔公园

我一直想知道Stream在C#.Net中使用的最佳实践是什么。提供已写入的流还是提供流更好?即:

public Stream DoStuff(...)
{
    var retStream = new MemoryStream();
    //Write to retStream
    return retStream;
}

相对于

public void DoStuff(Stream myStream, ...)
{
    //write to myStream directly
}

我一直使用前一个示例来进行生命周期控制,但是我感到这Stream是因为缺少更好的单词而无法使用“流式处理”的方式

克里斯多夫

我更喜欢“第二种方式”(对提供的流进行操作),因为它具有一些明显的优点:

  • 您可以具有多态性(假设您的签名证明您可以对任何Stream提供的类型进行操作)。
  • Stream现在或以后,很容易将其抽象为扩展方法。
  • 您明确划分了责任。该方法不必在乎如何构造流,而只在乎如何对其应用特定操作。

另外,如果您要返回一个新的流(选项1),您将不得不Seek再次从该流中读取数据会感到有些奇怪(除非您在方法本身中这样做,这是次优的)再一次,因为可能并不总是需要它-以后在所有情况下都可能无法读取该流)。Seek将一个已经存在的流传递给可以清楚地写入该流的方法之后,看起来似乎并不那么尴尬。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章