2009-10-08 12 views
25

C'è un modo per capire che cosa sta usando .NET come "terminatore di riga predefinito"? Ad esempio, la documentazione per StringBuilder.AppendLine (String) dice "Appende una copia della stringa specificata seguita dal terminatore di riga predefinito ...". Diverse classi correlate al testo in .NET si riferiscono allo stesso concetto.. NET "terminatore di riga predefinito"?

C'è un modo per capire a livello di codice cosa viene utilizzato come terminatore di riga (in fase di esecuzione)? O è sicuro assumere che sarà sempre "\ r \ n" per una macchina Windows? Preferisco non codificare il valore nel mio codice se posso evitarlo.

risposta

40

StringBuilder.AppendLine utilizza Environment.NewLine, che è "\r\n" per piattaforme non Unix e "\n" per piattaforme Unix.

Sarà sempre "\r\n" per un computer Windows, ma è possibile utilizzare Environment.NewLine al posto di un valore hardcoded.

grazie a @Guffa per la verifica di questo

+1

Ah perfetto, sapevo che doveva esserci qualcosa del genere. Grazie! –

+1

vorrei che ci fosse un modo per cambiare il terminatore di linea predefinito per un particolare oggetto StringBuilder – Alex

17

Questo è il codice dal metodo StringBuilder.AppendLine(string) (utilizzando .NET Reflector):

[ComVisible(false)] 
public StringBuilder AppendLine(string value) 
{ 
    this.Append(value); 
    return this.Append(Environment.NewLine); 
} 

Come si vede, è infatti utilizzando la proprietà Environment.NewLine.

2

Su Mac, la nuova riga era '\ r' fino a quando non hanno basato il loro sistema operativo su linux. Ora è '\ n'.

+3

Solo un piccolo selezionamento: il Mac OS di oggi è in realtà basato su UNIX, non su Linux. E la prima versione basata su UNIX è arrivata all'inizio del 2001, circa un anno prima che .NET venisse rilasciato. Quindi la notazione '\ r' non è stata rilevante per qualche tempo. –

Problemi correlati