當你需要一個流重置爲開頭(如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