C# 为什么使用Seek(0L,SeekOrigin.Begin)而不是Position=0,反之亦然

C# 为什么使用Seek(0L,SeekOrigin.Begin)而不是Position=0,反之亦然,c#,asp.net,C#,Asp.net,如果有什么不同,谁能给我解释一下吗 我试着用谷歌搜索,但找不到太多的信息。也许我没有使用正确的关键词 如果您有任何见解,我们将不胜感激。在您的示例中没有区别 Stream.Position和Stream.Seek之间的实际区别在于Position使用绝对偏移量,而Seek使用相对于第二个参数指定的原点的偏移量。据我所知,至少在这种特定情况下,没有任何差异 方法Seek()和属性Position都要求CanSeek为true,所以从我看来这取决于实现者 Seek实际上是允许从指定位置(SeekOr

如果有什么不同,谁能给我解释一下吗

我试着用谷歌搜索,但找不到太多的信息。也许我没有使用正确的关键词


如果您有任何见解,我们将不胜感激。

在您的示例中没有区别


Stream.Position
Stream.Seek
之间的实际区别在于
Position
使用绝对偏移量,而
Seek
使用相对于第二个参数指定的原点的偏移量。

据我所知,至少在这种特定情况下,没有任何差异

方法Seek()和属性Position都要求CanSeek为true,所以从我看来这取决于实现者

Seek实际上是允许从指定位置(SeekOrigins)搜索到偏移量(MSDN上给出的示例有些复杂,但代表了目的:)

位置是绝对的,显然不是用来搜索的

你提到的情况恰好是相同的

就我个人而言,我会使用.Position=0移动到流的开头,因为对我来说,这比“使用文件开头作为原点进行搜索并移动字节的0偏移量”更清晰
stream.Position=x两者都会导致流位置设置为
x
。不同之处在于
位置
设置器无条件丢弃任何读取缓冲区,而
查找
方法尝试保留缓冲区中仍与新位置相关的部分


您必须测试哪一个对您的场景更快,但肯定存在性能差异,并且在所有情况下都不更快。我真想知道为什么没有记录这种差异。

谢谢,这是一个我没有意识到的重要差异。帮助我修复了一个错误的小错误数据。改为位置,数据被读取。