End-of-line identifier in VB.NET?

.net, vb.net

Solution

I believe it generally makes most sense to use `Environment.NewLine` as the new-line identifier, for a number of reasons:

- It is an environment-dependent read-only variable. If you happen to be running your program on Linux (for example), then the value will simply be `\n`.

- `vbCrLf` is a legacy constant from the VB6 and earlier languages. Also, it's not environment-independent.

- `\r\n` has the same issue of not being environment-dependent, and also can't be done nicely in VB.NET (you'd have to assign a variable to `Chr(13) & Chr(10)`).

- Controls exists in the `Microsoft.VisualBasic` namespace, effectively making it a legacy/backwards-compatibility option, like `vbCrLf`. Always stay clear of legacy code if possible.

Problem

What end-of-line identifier should I use (for example, for output to text files)? There are many choices: - vbCrLf - vbNewLine (apparently an alias of vbCrLf) - ControlChars.CrLf - ControlChars.NewLine - Environment.NewLine - A static member in some C# class in the application (requires mixed-language solution): public static string LINEEND = "\r\n"; - `Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10)` (generated by the Visual Studio designer, at least Visual Basic 2005 Express Edition, for a TextBox with property Multiline set to True when Shift + Return is used while editing property Text.) What is best practice?

Original source