Stream.Seek(0,SeekOrigin.Begin)或Position = 0

时间:2011-08-30 05:07:52

标签: c# .net stream

当您需要将流重置为开头(例如MemoryStream)时,最佳做法是使用

stream.Seek(0, SeekOrigin.Begin);

stream.Position = 0;

我看到两者都很好,但是想知道一个人是否比另一个更正确?

2 个答案:

答案 0 :(得分:133)

答案 1 :(得分:3)

您可以查看两种方法的源代码以查找:

成本几乎相同(3个ifs和一些算术)。然而,这仅适用于跳转到Position = 0之类的绝对偏移,而不是像Position += 0这样的相对偏移,在这种情况下,Seek似乎稍好一些。

然而,你应该记住,我们正在谈论少数整数atirthmetics和ifs检查的表现,即使用基准测试方法甚至无法准确测量。像其他人已经指出的那样,没有显着/可检测到的差异。