当你需要一个流重置为开头(如MemoryStream
)是使用Stream.Seek(0,SeekOrigin.Begin)或位置= 0
stream.Seek(0, SeekOrigin.Begin);
或
stream.Position = 0;
最佳实践
我见过这两个工作都很好,但是想知道一个比另一个更正确吗?
当你需要一个流重置为开头(如MemoryStream
)是使用Stream.Seek(0,SeekOrigin.Begin)或位置= 0
stream.Seek(0, SeekOrigin.Begin);
或
stream.Position = 0;
最佳实践
我见过这两个工作都很好,但是想知道一个比另一个更正确吗?
设置绝对位置时使用位置,设置相对位置时使用位置。两者都是为了方便而提供的,所以您可以选择适合您代码风格和可读性的代码。访问位置要求流可以搜索,因此它们可以安全地互换。
我甚至对相对位置使用属性:'stream.Position + = 10;'对我来说看起来很可读。 –
使用SeekOrigin.Begin和SeekOrigin.Current之间是否存在速度差异? – gonzobrains
@gonzobrains [“返回值:流中的新位置,通过组合初始参考点和偏移量计算得出。”](http://msdn.microsoft.com/zh-cn/library/system.io.memorystream .seek.aspx)。所以合并成本不仅仅是直接设置位置。实际上,它意味着挑剔。 ))) – user808128
如果是返回内存流的内容,ToArray的作品无论位置如何 –
答案:最具可读性。 – jgauffin
我个人更喜欢'stream.Position = 0;'但我必须同意@jgauffin,只要选择最具可读性,两种解决方案都可以正常工作。 – lenniep