当前位置:  开发笔记 > 编程语言 > 正文

为什么这种隐式使用ToString()不会导致异常?

如何解决《为什么这种隐式使用ToString()不会导致异常?》经验,为你挑选了1个好方法。

我已经创建了一个简单的例子来提出这个问题.

以下代码编译并运行:

static void Main(string[] args)
{
    string bigString, littleString;
    littleString = null;
    bigString = "word " + littleString + " word";
}

此代码编译但抛出运行时NullReference异常.

static void Main(string[] args)
{
    string bigString, littleString;
    littleString = null;
    bigString = "word " + littleString.ToString() + " word";
}

为什么第一个代码不会抛出类似的异常?我本以为,为了将它连接到其他字符串,会隐含使用ToString(),此时它会遇到与第二段代码相同的基本问题.



1> Servy..:

第一个片段根本不打电话ToString.它调用string.Concat(string, string)在其实现中,将null值处理为空字符串.它不需要调用ToString将该参数转换为string(无论是否null),因为它已经是一个string.(如果不是一个string,那么需要调用ToString它,但它只有这样做,如果它不是null).

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有