2011-08-30 13 views
114

Cuando es necesario restablecer una corriente de inicio (por ejemplo MemoryStream) es lo mejor práctica utilizarStream.Seek (0, SeekOrigin.Begin) o Posición = 0

stream.Seek(0, SeekOrigin.Begin); 

o

stream.Position = 0; 

He visto que ambos funcionan bien, pero me pregunto si uno era más correcto que el otro.

+0

Si va a devolver el contenido de la secuencia de la memoria, ToArray funciona independientemente de la posición –

+3

Respuesta: La que es más legible. – jgauffin

+6

Personalmente prefiero 'stream.Position = 0;' pero tengo que estar de acuerdo con @jgauffin, simplemente elija la más legible, ambas soluciones funcionan bien. – lenniep

Respuesta

96

Utilice la posición cuando establezca una posición absoluta y busque cuando establezca una posición relativa. Ambos se proporcionan para su comodidad, de modo que puede elegir uno que se ajuste al estilo y la legibilidad de su código. El acceso a la posición requiere que la secuencia sea buscable para que sean intercambiables de forma segura.

+39

Uso la propiedad incluso para posiciones relativas: 'stream.Position + = 10;' me parece bastante legible. –

+4

¿Existe una diferencia de velocidad entre usar SeekOrigin.Begin y SeekOrigin.Current? – gonzobrains

+6

@gonzobrains ["Valor de retorno: la nueva posición dentro de la ruta, calculada combinando el punto de referencia inicial y el desplazamiento."] (Http://msdn.microsoft.com/en-us/library/system.io.memorystream .seek.aspx). Entonces la combinación cuesta un poco más que simplemente establecer la posición directamente. Prácticamente, no significa nada más que recoger los dientes.))) – user808128