关于c#代码Convert.ToChar(null);出现异常的详解(图)


当前第2页 返回上一页

当执行Convert.ToChar(obj);时,obj的类型已经明确了是object类型,所以调用的是Convert.ToChar(object value);的实现:

1

2

3

4

5

public static char ToChar(object value)

{    if (value != null)

    {        return ((IConvertible) value).ToChar(null);

    }    return '\0';

}

而执行Convert.ToChar(null);时,null可以赋值给多种数据类型,而编译器在处理时默认把它当作了String类型,所以我们在调用堆栈中看到了中间的一步:System.Convert.ToChar(string value),实现如下:

1

2

3

public static char ToChar(string value)

{    return ToChar(value, null);

}

所以才会在 System.Convert.ToChar(String value, IFormatProvider provider)发生了异常

1

2

3

4

5

6

7

public static char ToChar(string value, IFormatProvider provider)

{    if (value == null)

    {        throw new ArgumentNullException("value");

    }    if (value.Length != 1)

    {        throw new FormatException(Environment.GetResourceString("Format_NeedSingleChar"));

    }    return value[0];

}

总结

究其原因,是编译器给与“null”的默认数据类型的问题,所以导致看似相同的代码,却产生不同的结果。

这也涉及到多态和重载(多态是面向对象编程思想的一种特征,重载是指方法可以根据不同的参数个数与类型,来实现多种功能,重载方法可以理解成多态的具体表现形式),如果只有Convert.ToChar(object value);这一种实现,也不会产生本文阐述的问题,也不会有本文了。

以上就是关于c#代码Convert.ToChar(null);出现异常的详解(图)的详细内容!

返回前面的内容

相关阅读 >>

详解C#把unicode编码转换为gb编码的示例代码

C#如何计算2个字符串相似度的示例代码分享

详细介绍C#代码与javascript函数的相互调用

.net框架-微软给出的C#编程风格代码实例

关于C#中方法的阐述

C#实现base64处理的加密解密,编码解码的示例代码

.net的优点

C#灵活使用类的方法分享

C#学习记录:编写高质量代码改善整理建议1-3

C#中把image无损转换为icon的实例详解

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...