2009-09-09 23 views
17

¿Qué identificador de final de línea debo usar (por ejemplo, para los archivos de salida de texto)?Identificador de fin de línea en VB.NET?

Hay muchas opciones:

  • vbCrLf
  • vbNewLine (al parecer un alias de vbCrLf)
  • ControlChars.CrLf
  • ControlChars.NewLine
  • Environment.NewLine
  • Un estática miembro en alguna clase de C# en la aplicación (requiere solución de lenguaje mixto): cadena pública estática LINEEND = "\ r \ n";
  • Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) (generado por el diseñador de Visual Studio, al menos Visual Basic 2005 Express Edition, para un cuadro de texto con la propiedad Multilínea establece en True cuando Shift + Volver se utiliza durante la edición de propiedad texto.)

¿Cuál es la mejor práctica?

Respuesta

24

creo que por lo general tiene más sentido utilizar Environment.NewLine como el identificador de nueva línea, por una serie de razones:

  • Es un dependiente del entorno variable de solo lectura. Si está ejecutando su programa en Linux (por ejemplo), entonces el valor será simplemente \n.
  • vbCrLf es una constante heredada de VB6 y lenguajes anteriores. Además, no es independiente del entorno.
  • \r\n tiene el mismo problema de no ser dependiente del entorno, y tampoco se puede hacer bien en VB.NET (tendría que asignar una variable a Chr(13) & Chr(10)).
  • Existen controles en el espacio de nombre Microsoft.VisualBasic, lo que lo convierte en una opción de compatibilidad heredada/retrocompatible, como vbCrLf. Siempre manténgase alejado del código heredado si es posible.
+0

'Environment.NewLine' no funciona (parece) en expresiones constantes. 'vbNewLine' sí (pero no he comprobado los demás) –

6

Environment.NewLine simplemente porque depende del entorno y se comporta de manera diferente en diferentes plataformas.

2

Dependiendo de que el estilo de programación, puede elegir:

  • clase ControlChars, si siempre utiliza VB y otras partes de sus normas de uso de VB código (¿cómo se declara variables como número entero o As Int32?? Integer es VB, Int32 es común entre todos los lenguajes .NET). De todos modos, solo si ya te has casado con VB. De lo contrario ..
  • Medio Ambiente para un lenguaje y entorno de manera genérica independend (mi sugerencia)

creo que el peor de los casos sería el uso de funciones retrocompatibility, como vbCrLf (o CInt() y así sucesivamente)

Cuestiones relacionadas