2009-06-18 49 views

risposta

148

A seconda della piattaforma. Su Windows è in realtà "\ r \ n".

Da MSDN:

Una stringa contenente "\ r \ n" per piattaforme non-Unix, o una stringa contenente "\ n" per le piattaforme Unix.

+5

Quale piattaforma UNIX fa .NET corsa a Microsoft messo nello doc? (Voglio dire, una parte di Mono.) – Jack

+6

@Jack Potresti scrivere su un file che verrà aperto nella piattaforma Unix. O l'invio di testo nel pacchetto che verrà ricevuto da una piattaforma Unix. E tra qualche mese .net sarà in esecuzione su piattaforme Unix. È già iniziato –

8

Dal docs ...

Una stringa contenente "\ r \ n" per piattaforme non-Unix, o una stringa contenente "\ n" per le piattaforme Unix.

+0

+1 per il collegamento – JeffH

3

Environment.NewLine darà "\ r \ n" quando eseguito su Windows. Se si stanno creando stringhe per ambienti basati su Unix, non si desidera "\ r".

18

Environment.NewLine restituirà il carattere di nuova riga per la piattaforma corrispondente in cui il codice viene eseguito

troverete questo molto utile quando si distribuisce il codice in Linux sul Mono quadro

63

Come altri hanno detto, Environment.NewLine restituisce una stringa specifico per la piattaforma per iniziare una nuova linea, che dovrebbe essere:

  • "\r\n" (\ u000d \ u000A) per Windows
  • 0.123.
  • "\n" (\ u000A) per Unix
  • "\r" (\ u000d) per Mac (se tale implementazione esistesse)

Si noti che quando si scrive alla console, Environment.NewLine non è strettamente necessario. Lo stream della console tradurrà "\n" nella sequenza della nuova riga appropriata, se necessario.

+0

L'implementazione Mac esiste. Solo Mono. Funziona su qualsiasi cosa. – Dykam

+14

Solo una nota, sarebbero vecchi Mac; i nuovi Mac (OSX) usano '\ n' –

+1

@Dykam, sì, ma funziona molto lentamente come il mio HP48gx – cod3monk3y

4

È possibile che si verifichino problemi quando si tenta di visualizzare messaggi su più righe separati da "\ r \ n".

è sempre una buona pratica di fare le cose in un modo standard, e utilizzare Environment.NewLine

92

esatta attuazione Environment.NewLine dal codice sorgente:

L'implementazione in .NET 4.6.1:

/*===================================NewLine==================================== 
**Action: A property which returns the appropriate newline string for the given 
**  platform. 
**Returns: \r\n on Win32. 
**Arguments: None. 
**Exceptions: None. 
==============================================================================*/ 
public static String NewLine { 
    get { 
     Contract.Ensures(Contract.Result<String>() != null); 
     return "\r\n"; 
    } 
} 

source


L'implementazione in.Nucleo NET:

/*===================================NewLine==================================== 
**Action: A property which returns the appropriate newline string for the 
**  given platform. 
**Returns: \r\n on Win32. 
**Arguments: None. 
**Exceptions: None. 
==============================================================================*/ 
public static String NewLine { 
    get { 
     Contract.Ensures(Contract.Result() != null); 
#if !PLATFORM_UNIX 
     return "\r\n"; 
#else 
     return "\n"; 
#endif // !PLATFORM_UNIX 
    } 
} 

source (in System.Private.CoreLib)

public static string NewLine => "\r\n"; 

source (in System.Runtime.Extensions)

+11

Qualcun altro si aspettava un codice così semplice? : D – developerbmw

+4

Il codice sorgente non giace mai :) – aloisdg

+4

sì :) Per qualche motivo mi aspettavo che l'implementazione .NET fosse una funzione complicata enorme – developerbmw