Le tre costanti hanno funzioni simili al giorno d'oggi, ma diverse origini storiche, e molto di tanto in tanto si può essere richiesto di utilizzare uno o l'altro.
È necessario ripensare ai giorni delle vecchie macchine da scrivere manuali per ottenere le origini di questo. Esistono due azioni distinte necessarie per iniziare una nuova riga di testo:
- spostare indietro la testa di battitura a sinistra. In pratica, in una macchina da scrivere, ciò avviene spostando il rotolo che porta la carta (il "carrello") completamente verso destra - la testina di scrittura è fissa. Questo è un ritorno a capo .
- sposta la carta verso l'alto della larghezza di una riga. Questo è un feed di linea .
Nel computer, queste due azioni sono rappresentati da due personaggi diversi - ritorno a capo è CR
, carattere ASCII 13, vbCr
; l'avanzamento riga è LF
, carattere ASCII 10, vbLf
. Ai vecchi tempi dei teletipi e delle stampanti di linea, alla stampante dovevano essere inviati questi due caratteri - tradizionalmente nella sequenza CRLF
- per iniziare una nuova riga, e quindi la combinazione CRLF
- vbCrLf
- diventava una sequenza di fine linea tradizionale , in alcuni ambienti di calcolo.
Il problema era, naturalmente, che era altrettanto logico utilizzare un solo carattere per contrassegnare la fine della linea e fare in modo che il terminale o la stampante eseguissero automaticamente le azioni di ritorno a capo e avanzamento riga. E così prima che tu lo sapessi, avevamo 3 diverse terminazioni di linea valide: solo LF
(usato in Unix e Macintoshes), CR
da solo (apparentemente usato nei vecchi Mac) e la combinazione CRLF
(usata in DOS, e quindi in Windows). Questo a sua volta ha portato alle complicazioni dei programmi DOS/Windows che hanno la possibilità di aprire file in text mode
, dove ogni coppia CRLF
letta dal file è stata convertita in un singolo CR
(e viceversa durante la scrittura).
Quindi - per tagliare una (troppo) lunga storia breve - ci sono ragioni storiche per l'esistenza dei tre separatori di riga separati, che ora sono spesso irrilevanti: e forse la migliore linea d'azione in .NET è quella di usare Environment.NewLine
che significa che qualcun altro ha deciso per te quale usare e che i futuri problemi di portabilità dovrebbero essere ridotti.
Un'aggiunta a questo ... dai vecchi tempi ... era normale usare il ritorno a capo su se stesso in modo da poter SOVRINARE il testo che avevi già stampato. Questo è stato spesso usato per aggiungere evidenziazioni o altri segni, ad esempio ---- i caratteri sono stati sovrascritti per indicare una parola barrata. Quando è uscito il carattere modificabile "Ball", si potrebbe persino cambiare il carattere di parole specifiche in una frase in questo modo. –
Ciò porta anche a un'altra differenza storica. Backspace VS Delete. Sui computer Backspace su un computer sposta il cursore indietro di una posizione e cancella il carattere precedente. Questo è diverso dal ruolo tradizionale che era quello di tornare indietro di uno spazio e NON cancellare, ma sovrascrivere. –