2009-10-08 19 views
25

¿Hay alguna manera de averiguar qué .NET está utilizando como su "terminador de línea predeterminado"? Por ejemplo, la documentación de StringBuilder.AppendLine (String) dice "Anexa una copia de la cadena especificada seguida del terminador de línea predeterminado ...". Varias clases relacionadas con el texto en .NET se refieren al mismo concepto..NET "terminador de línea predeterminado"?

¿Hay alguna forma de averiguar programáticamente qué se está utilizando como el terminador de línea (en tiempo de ejecución)? ¿O es seguro suponer que siempre será "\ r \ n" para una máquina con Windows? Prefiero no codificar ese valor en mi código si puedo evitarlo.

Respuesta

40

StringBuilder.AppendLine usará Environment.NewLine, que es "\r\n" para plataformas que no sean Unix y "\n" para plataformas Unix.

Siempre será "\r\n" para una máquina con Windows, pero puede usar Environment.NewLine en lugar de un valor codificado.

gracias a @Guffa para verificar esta

+1

Ah perfecto, sabía que debía haber algo así. ¡Gracias! –

+1

desearía que hubiera una manera de cambiar el terminador de línea predeterminado para un objeto StringBuilder en particular – Alex

17

Este es el código del método StringBuilder.AppendLine(string) (utilizando .NET Reflector):

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

Como se puede ver, es de hecho el uso de la propiedad Environment.NewLine.

2

En Mac, la nueva línea era '\ r' hasta que basaron su sistema operativo en Linux. Ahora es '\ n'.

+3

Solo un pequeño detalle: el Mac OS de hoy en realidad está basado en UNIX, no en Linux. Y la primera versión basada en UNIX llegó a principios de 2001, aproximadamente un año antes. Se lanzó .NET. Entonces, la notación '\ r' no ha sido relevante por algún tiempo. –

Cuestiones relacionadas