博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
System.Convert 的一些事
阅读量:5889 次
发布时间:2019-06-19

本文共 981 字,大约阅读时间需要 3 分钟。

经常看到同事写代码: 

bool? obj=从服务器返回来的值,可能为null。 

if(obj !=null && Convert.ToBoolean(obj)==true){    //Do something}

上面的代码的意图很明显,先判断obj 是不是null,如果不是null 的话,再调用Convert.ToBoolean方法,判断是不是True。

上面的方法没有任何问题,但有一点要确认的是, obj!=null 这句话需要判断吗?

于是笔者写了下面的代码来对Convert的ToXXX方法传递null值进行测试。

可以看到,method.Invoke(null,new object[]{null}) 

刻意的为ToXXX方法传递null值。

结果如下: 

从而证明了,对Convert的ToXXX方法传递null值是不会跑出异常的,并且会返回默认的值, 

例如int:0,  string:"",  char:'\0',  bool:false;

这代表上面的代码可以简化为

if(Convert.ToBoolean(obj)){//Do something.}

 

顺带提一下, 

下面的代码会跑出异常.Convert.ToChar(null); 
但是下面这段代码不会: 
object obj=null; 
Convert.ToChar(obj);返回'\0',空字符.

 

Convert.ToChar(null)在内部实际调用的是 Convert.ToChar(null, null),然而ToChar(null,null)的实现如下:

if (value == null){     throw new ArgumentNullException("value");}if (value.Length != 1){     throw new FormatException(Environment.GetResourceString("Format_NeedSingleChar"));}return value[0];

 

所以,直接传null值会出现异常。

本文转自LoveJenny博客园博客,原文链接:http://www.cnblogs.com/LoveJenny/archive/2011/06/11/2078602.html,如需转载请自行联系原作者
你可能感兴趣的文章
iOS开发-单例模式
查看>>
词汇小助手V1.2——可以显示英语单词的国际音标
查看>>
洛谷 1365 WJMZBMR打osu! / Easy
查看>>
删除UINavigationItem上的BarButtonItem
查看>>
数据分析相关模块
查看>>
Python数据结构1-----基本数据结构和collections系列
查看>>
SQL Denali-FileTable
查看>>
C# 图像处理:复制屏幕到内存中,拷屏操作
查看>>
PHP微信支付流程
查看>>
UDP收不到报文,调试了一晚上,终于发现问题所在
查看>>
Tornado简介
查看>>
Heron and His Triangle 2017 沈阳区域赛
查看>>
CF989B A Tide of Riverscape 思维 第七题
查看>>
unix高级环境编程-读书笔记(1)
查看>>
MongoDB学习教程(1)
查看>>
基于adt-bundle-windows-x86-20140321的android环境搭建
查看>>
Jquery遮罩ShowLoading组件
查看>>
pivot 使用
查看>>
hdu 1180 诡异的楼梯 BFS + 优先队列
查看>>
quartz
查看>>