tags:

views:

666

answers:

3

What end-of-line identifier should I use (e.g. for output to text files)?

There are many choices:

  • 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";

What is best practice?

+10  A: 

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-dependent.
  • \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.
Noldorin
+2  A: 

Environment.NewLine simply because it is environment dependent and behaves differently on different platforms.

Aamir
+1  A: 

Depending on you programming style, you may choose:

  • ControlChars class, if you always use VB and other parts of your code use VB standards (how do you declare variables? As Integer or As Int32? Integer is VB, Int32 is common between every .NET language). Anyway, just if you have already married VB. Otherwise..
  • Environment for a generic, language and environment independend way (my suggestion)

I think the worst would be the use of retrocompatibility functions, like vbCrLf (or CInt() and so on)

m.bagattini