Cuando necesita restablecer una transmisión al comienzo (por ejemplo MemoryStream
), es mejor usar
stream.Seek(0, SeekOrigin.Begin);
o
stream.Position = 0;
He visto que ambos funcionan bien, pero me preguntaba si uno era más correcto que el otro.
stream.Position = 0;
pero tengo que estar de acuerdo con @jgauffin, solo elija la más legible, ambas soluciones funcionan bien.Respuestas:
Use Posición cuando establezca una posición absoluta y Busque cuando establezca una posición relativa. Ambos se proporcionan por conveniencia para que pueda elegir uno que se ajuste al estilo y la legibilidad de su código. La posición de acceso requiere que la transmisión sea buscable para que sean intercambiables de forma segura.
fuente
stream.Position += 10;
parece bastante legible.Puede consultar el código fuente de ambos métodos para averiguarlo:
https://referencesource.microsoft.com/#mscorlib/system/io/memorystream.cs,320
https://referencesource.microsoft.com/#mscorlib/system/io/memorystream.cs,482
El costo es casi idéntico (3 si y algo de aritmética). Sin embargo, esto solo es cierto para saltar a compensaciones absolutas
Position = 0
y no a compensaciones relativasPosition += 0
, en cuyo caso Seek parece un poco mejor.Sin embargo, debe tener en cuenta que estamos hablando sobre el rendimiento de un puñado de atirthmetics enteros y verificaciones ifs, es decir, que ni siquiera se puede medir con precisión con los métodos de evaluación comparativa. Como otros ya señalaron, no existe una diferencia significativa / detectable.
fuente