我可以更改Environment.NewLine的值吗?

时间:2009-02-20 15:27:52

标签: c# .net newline

我正在使用一个库,它在编写文件时使用Environment.NewLine作为换行符。我需要它来编写Unix格式的文件,因此想要更改换行符。

我可以更改Environment.NewLine的值吗?

任何其他想法(除了转换创建文件后)?

7 个答案:

答案 0 :(得分:10)

  

我可以更改Environment.NewLine的值吗?

没有。如果您知道要编写哪个平台,请为每个平台创建类,并让它们拥有自己的实现。在最简单的情况下,这将看起来如下:

public abstract class Platform { public abstract string Newline { get; } }

public sealed class Unix : Platform {
    public override string Newline { get { return "\n"; } }
}

等,然后只使用相应类的实例。

答案 1 :(得分:2)

根据MSDN,Environment类是密封的,因此您将无法从中继承更改值。据我所知,这是你能够做到的唯一方法。或者,您可以尝试创建一个扩展Environment类的部分类。我从来没有尝试过后者,所以不确定它是否会起作用。

答案 2 :(得分:1)

Environment.Newline返回托管.Net运行时的运行时环境的换行符。您不应该使用它来将换行符转换为另一个平台的换行符。

我建议您实现自己的转化课程。

答案 3 :(得分:0)

Environment.NewLine属性常量,因此没有更改它。我可以推荐的最好的事情是改变使用它的地方,到你自己的常数。

答案 4 :(得分:0)

第三方库是写入Stream还是传递文件名?

在前一种情况下,您可以传递一个MemoryStream,然后在换行符上进行替换以获得所需的内容。在后者中,将其写入临时文件,然后流式传输到真实文件(同时替换行结尾)。

答案 5 :(得分:0)

上帝保佑你不能......你完全改变了System.Environment命名空间的全部含义。

您要做的是为特定操作系统编写内容(无论您在哪个环境中运行应用程序),所以环境。不是你应该开始使用的东西。

答案 6 :(得分:-2)

我们遇到了这个问题,我们不得不将NewLine的值更改为<br />以进行网络输出。

它需要在我们班级中使用另一个属性。真的没办法解决它。