代码之家  ›  专栏  ›  技术社区  ›  TheSoftwareJedi jac

我可以更改environment.newline的值吗?

  •  6
  • TheSoftwareJedi jac  · 技术社区  · 16 年前

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

    我可以更改environment.newline的值吗?

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

    7 回复  |  直到 16 年前
        1
  •  10
  •   Konrad Rudolph    16 年前

    我可以更改environment.newline的值吗?

    不知道。如果知道要为哪个平台编写代码,请为每个平台创建类,并让它们有自己的实现。在最简单的情况下,如下所示:

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

    等等,然后只使用适当类的一个实例。

        2
  •  2
  •   BinaryMisfit    16 年前

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

        3
  •  1
  •   Kb.    16 年前

    newline返回承载.NET运行时的运行时环境的换行符。您不应该将换行符转换为另一个平台的换行符。

    我建议实现您自己的转换类。

        4
  •  0
  •   Mike_G    16 年前

    environment.newline属性常量,因此不会更改它。我能推荐的最好的方法就是把它用在任何地方,变成你自己的常数。

        5
  •  0
  •   Richard    16 年前

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

    在前一种情况下,您可以传递一个memoryStream,然后在换行符上进行替换,以得到您想要的。在后者中,让它写入一个临时文件,然后流到实际文件(同时替换行尾)。

        6
  •  0
  •   Jcl    9 年前

    上帝保佑你不能…你会完全改变 System.Environment 命名空间。

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

        7
  •  -2
  •   Broam    15 年前

    我们遇到了这样的问题,我们必须将换行符的值改为 <br /> 用于Web输出。

    它需要另一个属性在我们的类中使用。真的没有办法。