为什么Microsoft重载方法Console.Write()和Console.WriteLine()?C#

Eri*_*yan 3 c#

为什么Microsoft重载方法Console.Write()和Console.WriteLine()?他们可以制作这样的方法

public void WriteLine(Object ob)
{
   Console.WriteLine(ob.ToString());
}
public static void WriteLine(string value);
Run Code Online (Sandbox Code Playgroud)

但他们做到了

    public static void WriteLine(bool value);

    public static void WriteLine(float value);

    public static void WriteLine(int value);

    [CLSCompliant(false)]
    public static void WriteLine(uint value);

    public static void WriteLine(long value);

    [CLSCompliant(false)]
    public static void WriteLine(ulong value);

    public static void WriteLine(object value);

    public static void WriteLine(string value);

    public static void WriteLine(double value);

    public static void WriteLine(decimal value);
Run Code Online (Sandbox Code Playgroud)

das*_*ght 10

长话短说,微软出于性能原因做了这件事.

基于对象的方法需要为具有值类型对象的每次调用Console创建一个丢弃的包装器对象.考虑一下你打电话会发生什么

Console.WriteLine(12345678);
Run Code Online (Sandbox Code Playgroud)

首先,12345678装入一个物体.然后传递对象WriteLine.接下来,WriteLine调用ToString该对象.最后,将字符串复制到输出中.

此时,来自装箱操作的对象和字符串ToString变得有资格进行垃圾收集.Microsoft决定在每个调用中创建两个垃圾对象对于写入控制台这样的基本操作是不可接受的,因此它们提供了您列出的所有重载.