我已经创建了一个简单的例子来提出这个问题.
以下代码编译并运行:
static void Main(string[] args)
{
string bigString, littleString;
littleString = null;
bigString = "word " + littleString + " word";
}
Run Code Online (Sandbox Code Playgroud)
此代码编译但抛出运行时NullReference异常.
static void Main(string[] args)
{
string bigString, littleString;
littleString = null;
bigString = "word " + littleString.ToString() + " word";
}
Run Code Online (Sandbox Code Playgroud)
为什么第一个代码不会抛出类似的异常?我本以为,为了将它连接到其他字符串,会隐含使用ToString(),此时它会遇到与第二段代码相同的基本问题.
第一个片段根本不打电话ToString.它调用string.Concat(string, string)在其实现中,将null值处理为空字符串.它不需要调用ToString将该参数转换为string(无论是否null),因为它已经是一个string.(如果不是一个string,那么就需要调用ToString它,但它只有这样做,如果它不是null).
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |