ストリームを先頭にリセットする必要がある場合(例:MemoryStream
)は、使用するのがベストプラクティスです
stream.Seek(0, SeekOrigin.Begin);
または
stream.Position = 0;
私は両方がうまくいくのを見ましたが、一方が他方よりも正しいかどうか疑問に思いましたか?
絶対位置を設定する場合はPositionを使用し、相対位置を設定する場合はSeekを使用します。どちらも利便性のために提供されているため、コードのスタイルと読みやすさに合ったものを選択できます。 Positionにアクセスするには、ストリームを安全に交換できるように、ストリームがシーク可能である必要があります。
両方の方法のソースコードを調べて確認できます。
コストはほぼ同じです(3つのifといくつかの算術)。ただし、これはPosition = 0
などの相対オフセットではなく、Position += 0
などの絶対オフセットにジャンプする場合にのみ当てはまります。
ただし、ベンチマーク手法では正確に測定できないなど、少数の整数演算およびifsチェックのパフォーマンスについて説明していることに留意してください。すでに指摘した他の人と同様に、重要な/検出可能な違いはありません。