为字符串添加null时为什么没有异常?

ash*_*010 10 c# string-concatenation

为什么不抛出异常不明白,obj为null

object obj = null;
Console.WriteLine("Hello World " + obj);
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 21

这编译成

Console.WriteLine(String.Concat("Hello World ", obj));
Run Code Online (Sandbox Code Playgroud)

String.Concat方法忽略null参数.

它的定义如下:(来自.Net参考源)

    public static String Concat(Object arg0, Object arg1) {
        if (arg0==null) {
            arg0 = String.Empty; 
        }

        if (arg1==null) { 
            arg1 = String.Empty;
        } 
        return Concat(arg0.ToString(), arg1.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

我不知道为什么它不是简单地返回arg1.ToString()如果arg0==null.

String.Concat(string, string)方法定义如下:

    public static String Concat(String str0, String str1) { 
        if (IsNullOrEmpty(str0)) { 
            if (IsNullOrEmpty(str1)) {
                return String.Empty; 
            }
            return str1;
        }

        if (IsNullOrEmpty(str1)) {
            return str0; 
        } 

        int str0Length = str0.Length; 

        String result = FastAllocateString(str0Length + str1.Length);

        FillStringChecked(result, 0,        str0); 
        FillStringChecked(result, str0Length, str1);

        return result; 
    }
Run Code Online (Sandbox Code Playgroud)