关于System.Convert的那些事儿
经常看到同事写代码:
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值会出现异常。
相关推荐
-
关于System.Convert的那些事儿
经常看到同事写代码:bool? obj=从服务器返回来的值,可能为null. 复制代码 代码如下: if(obj !=null && Convert.ToBoolean(obj)==true){ //Do something} 上面的代码的意图很明显,先判断obj 是不是null,如果不是null 的话,再调用Convert.ToBoolean方法,判断是不是True. 上面的方法没有任何问题,但有一点要确认的是, obj!=null 这句话需要判断吗? 于是笔者写了下面的代码来对C
-
通过DNS TXT记录执行powershell
0x00简介 DNS TXT记录一般用来记录某个主机名或者域名设置的说明,在这里可以填写任何东西,长度限制255.绝大多数的TXT记录是用来做SPF记录(反垃圾邮件).本篇文章主要介绍如何使用 nishang 通过创建TXT记录执行powershell脚本.当然,首先你要有一个域名. 0x01创建TXT记录 这里需要使用nishang中的一个脚本 OUT-DnsTxt . 1.常见命令 因为常见命令比较短,所以可以直接添加到TXT记录中,如下图: 现在查看一下TXT记录: 可以看到记录已经成功添
-
.NET MD5加密解密代码解析
MD5简介: 是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数).不管是MD2.MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要.虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑.这三个算法的描述和C语言源代码在Internet RFCs 1321中有详细的描述,这是一份最权威的文档
-
C#编写的Base64加密和解密类
这个C#类是一个基于Base64的加密和解密类,用户可以可以使用默认的秘钥进行加密.解密,也可以自己设定秘钥进行加密和解密,非常实用 代码一:非常精简的代码 /// <summary> /// Base64加密,解密方法 /// </summary> /// <paramname="s">输入字符串</param> /// <paramname="c">true-加密,false-解密</param&
-
PowerShell把IP地址转换成二进制的方法
IPv4地址其实是32位二进制数字,然后我们将它分成四段,每段8位.8位二进制能表达的范围是0~255,所以点分十进制的每一个数字的取值都在0~255之间.有的时候,比如为了换算子网掩码,我们需要将IP地址还原成二进制串的形式,如:11000000101010000000110000100001.今天小编看到一个例子就是来完成这个操作的. 代码如下: 复制代码 代码如下: $ipV4 = '192.168.12.33' -join ($ipV4.Split('.') | ForEach-Obje
-
C# Quoted-Printable编码、解码
复制代码 代码如下: # using System; # using System.Collections; # using System.Text; # # /// <summary> # /// Class for encoding and decoding a string to QuotedPrintable # /// RFC 1521 http://www.ietf.org/rfc/rfc1521.txt # /// RFC 2045 http://www.ietf.org/rfc
-
.NET 2.0 的压缩功能代码
在.net 1.1中我们要实现压缩这一功能,一般都是用open source的SharpZipLib 或者调用J#类库. 现在在.net 2.0中增加了压缩功能,名字空间为 using System.IO.Compression; 以下是使用示例: 压缩字符串 复制代码 代码如下: public static string ZipString(string unCompressedString) { byte[] bytData = System.Text.Encoding.UTF8.GetB
-
asp.net 无刷新翻页就是这么简单
个人喜欢用Repeater,因其简洁,此AjaxPager定向为Repeater! 一步一步看来: 代码 复制代码 代码如下: [DefaultProperty("TotalRecord"), ToolboxData("<{0}:AjaxPager runat=server></{0}:AjaxPager>")] public class AjaxPager : WebControl,ICallbackEventHandler { publi
-
C#实现pdf导出 .Net导出pdf文件
最近碰见个需求需要实现导出pdf文件,上网查了下代码资料总结了以下代码.可以成功的实现导出pdf文件. 在编码前需要在网上下载个itextsharp.dll,此程序集是必备的.楼主下载的是5.0版本,之前下了个5.4的似乎不好用. 下载之后直接添加引用. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Webpdf.aspx.cs" Inherits="Web导出
-
ASP.NET(C#)
一个生成不重复随机数的方法 //生成不重复随机数算法 private int GetRandomNum(int i,int length,int up,int down) { int iFirst=0; Random ro=new Random(i*length*unchecked((int)DateTime.Now.Ticks)); iFirst=ro.Next(up,down); return iFirst; } 发表于 @ 2005年12月30日 3:44 PM | 评论 (0
随机推荐
- 用VBS写的VBSCRIPT代码格式化工具VbsBeautifier
- 百度工程师讲PHP函数的实现原理及性能分析(一)
- PowerShell中使用Get-ChildItem命令读取目录、文件列表使用例子和小技巧
- Java设计模式之备忘录模式_动力节点Java学院
- perl跳过首行读取文件的实现代码
- 用Mimer Validator检查SQL查询
- Could not load file or assembly "App_Licenses.dll"的问题
- Python检测生僻字的实现方法
- 从零学python系列之从文件读取和保存数据
- Javascript入门学习第六篇 js DOM编程第1/2页
- 在Mac OS X安装Docker教程
- Python 专题四 文件基础知识
- jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
- 如何使用Maven管理项目?Maven管理项目实例
- 在C#中 webbrowser的使用心得
- VBS教程:属性-Item 属性
- php防止网站被攻击的应急代码
- Android 网络图片查看器与网页源码查看器
- 浅谈FileItem类的常用方法
- Android Studio使用小技巧:提取方法代码片段