2011-08-30 17 views
114

Quando è necessario ripristinare un flusso di inizio (ad esempio MemoryStream) è buona norma utilizzareStream.Seek (0, SeekOrigin.Begin) o posizione = 0

stream.Seek(0, SeekOrigin.Begin); 

o

stream.Position = 0; 

Ho visto entrambi funzionano bene, ma mi chiedevo se uno era più corretto dell'altro?

+0

Se è necessario restituire il contenuto del flusso di memoria, ToArray funziona indipendentemente dalla posizione –

+3

Risposta: La più leggibile. – jgauffin

+6

Personalmente preferisco 'stream.Position = 0;' ma devo essere d'accordo con @jgauffin, basta scegliere la più leggibile, entrambe le soluzioni funzionano bene. – lenniep

risposta

96

Utilizzare Posizione durante l'impostazione di una posizione assoluta e Ricerca quando si imposta una posizione relativa. Entrambi sono forniti per comodità, quindi puoi sceglierne uno che si adatti allo stile e alla leggibilità del tuo codice. L'accesso alla posizione richiede che il flusso sia ricercabile in modo che siano intercambiabili in modo sicuro.

+39

Io uso la proprietà anche per le posizioni relative: 'stream.Position + = 10;' mi sembra abbastanza leggibile. –

+4

Esiste una differenza di velocità tra l'utilizzo di SeekOrigin.Begin e SeekOrigin.Current? – gonzobrains

+6

@gonzobrains ["Valore di ritorno: la nuova posizione all'interno del flusso, calcolata combinando il punto di riferimento iniziale e l'offset."] (Http://msdn.microsoft.com/en-us/library/system.io.memorystream .seek.aspx). Quindi la combinazione costa un po 'di più che impostare direttamente la posizione. Praticamente non significa altro che la nit-picking.))) – user808128

Problemi correlati