为什么F#printfn没有实现Console.WriteLine?

时间:2016-09-12 22:04:04

标签: f# printf console.writeline

我注意到使用F#printfn时出现意外行为。 它似乎将格式字符串分解为块,并为每次调用printfn多次调用Console.Write。我希望它能格式化整个字符串,然后调用一次Console.WriteLine。

我注意到了这一点,因为我使用我自己的TextWriter调用Console.SetOut来拦截标准的控制台输出,该文本尝试为每行输出添加时间戳和一些其他自定义文本。

是什么给出了?

1 个答案:

答案 0 :(得分:0)

这是我的猜测,因为它值得:

  1. 编译器做了一些魔术
  2. 在运行时,实现者知道Write将转到缓冲流,因此性能不会与使用StringBuilder对象及其ToString()覆盖之类的东西大不相同。也许性能更好,因为它们避免了对象分配。