Ketika Anda perlu mengatur ulang aliran ke awal (misalnya MemoryStream
) apakah itu praktik terbaik untuk digunakan
stream.Seek(0, SeekOrigin.Begin);
atau
stream.Position = 0;
Saya pernah melihat keduanya bekerja dengan baik, tetapi bertanya-tanya apakah yang satu lebih benar daripada yang lain?
stream.Position = 0;
tetapi saya harus setuju dengan @ jgauffin, cukup pilih yang paling mudah dibaca, kedua solusi bekerja dengan baik.Jawaban:
Gunakan Posisi saat mengatur posisi absolut dan Cari saat mengatur posisi relatif. Keduanya disediakan untuk kenyamanan sehingga Anda dapat memilih satu yang sesuai dengan gaya dan keterbacaan kode Anda. Mengakses Posisi membutuhkan aliran yang dapat dicari sehingga mereka dapat dipertukarkan dengan aman.
sumber
stream.Position += 10;
tampaknya cukup mudah dibaca oleh saya.Anda dapat melihat kode sumber untuk kedua metode untuk mencari tahu:
https://referencesource.microsoft.com/#mscorlib/system/io/memorystream.cs320
https://referencesource.microsoft.com/#mscorlib/system/io/memorystream.cs,482
Biaya hampir identik (3 jika dan beberapa aritmatika). Namun ini hanya berlaku untuk melompat ke offset absolut suka
Position = 0
dan bukan offset relatif sepertiPosition += 0
, dalam hal ini Seek tampak sedikit lebih baik.Namun Anda harus ingat bahwa kita berbicara tentang kinerja beberapa atithmetics integer dan pemeriksaan ifs, itu seperti bahkan tidak dapat diukur secara akurat dengan metode benchmarking. Seperti yang sudah disebutkan sebelumnya, tidak ada perbedaan signifikan / terdeteksi.
sumber