简体   繁体   中英

End-of-line identifier in VB.NET?

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?

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.

Environment.NewLine只是因为它依赖于环境并且在不同平台上的行为不同。

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM