2009-10-08 69 views
25

有没有什么办法可以找出.NET用作其“默认行结束符”?例如,StringBuilder.AppendLine(String)的文档说它“附加指定字符串的副本,后跟默认行终止符...”。 .NET中几个与文本相关的类引用了相同的概念。.NET“默认行结束符”?

有没有什么办法可以通过编程来找出什么是作为行终止符(在运行时)?或者是否可以安全地假设Windows机器始终为“\ r \ n”?如果我能避免它,我宁愿不将这些值硬编码到我的代码中。

回答

40

StringBuilder.AppendLine将使用Environment.NewLine,其对于非Unix平台是“\r\n”而对于Unix平台是“\n”。

Windows机器始终为“\r\n”,但您可以使用Environment.NewLine代替硬编码值。

感谢@Guffa验证此

+1

啊完美,我知道一定有这样的事情。谢谢! – 2009-10-08 16:25:23

+1

希望有一种方法可以更改特定StringBuilder对象的默认行终止符 – Alex 2012-07-05 14:34:18

17

这是(使用.net反射)从StringBuilder.AppendLine(string)方法的代码:

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

正如你看到的,它确实使用Environment.NewLine财产。

2

在Mac上,换行符是'\ r',直到他们基于Linux操作系统。现在它的'\ n'。

+3

仅仅是一个小小的挑剔:今天的Mac OS实际上基于UNIX,而不是Linux。第一个基于UNIX的版本于2001年初发布,大约在.NET发布前一年。所以'\ r'符号在一段时间内并不相关。 – 2011-06-20 16:33:06