博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
值转换为可空类型
阅读量:4878 次
发布时间:2019-06-11

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

int? 这种类型实际上是Nullable<int>类型的实例,这里不过多介绍Nullable,只说明一点它在int的基础上可存储了null值,有时候在数据库操作时,我们会创建一个用于封装所需参数的类Model,若数据库中某个Int类型的字段可为空,为了保证与数据库同步,我们会在Model里给该字段定义为int?类型,但在查询取出来的时候就出现问题了,如果数据库中是空,reader["xxx"] 返回的是object类型,而我们要转为int类型只能Convert.ToInt32(reader["xxx"]); 但这时候reader["xxx"]的值为{} Dbnull.Value 空的意思。空是无法转换成Int32的 会抛出异常的 但是有没有方法能狗Convert.ToInt32?,使用int32?强转同样会抛异常,这时怎么办呢?? ?: 都会告诉你两侧类型不一致导致无法使用。

 

1   public static object ChanageType(this object value, Type convertsionType) 2         { 3             //判断convertsionType类型是否为泛型,因为nullable是泛型类, 4             if (convertsionType.IsGenericType && 5                 //判断convertsionType是否为nullable泛型类 6                 convertsionType.GetGenericTypeDefinition().Equals(typeof(Nullable<>))) 7             { 8                 if (value == null || value.ToString().Length == 0) 9                 {10                     return null;11                 }12 13                 //如果convertsionType为nullable类,声明一个NullableConverter类,该类提供从Nullable类到基础基元类型的转换14                 NullableConverter nullableConverter = new NullableConverter(convertsionType);15                 //将convertsionType转换为nullable对的基础基元类型16                 convertsionType = nullableConverter.UnderlyingType;17             }18             return Convert.ChangeType(value, convertsionType);19         }

 

转载于:https://www.cnblogs.com/Gxqsd/p/9214610.html

你可能感兴趣的文章
字典Dictionary
查看>>
JS重要知识点
查看>>
java解析数据
查看>>
Linux下安装多个tomcat
查看>>
UIPickView之自定义生日键盘和城市键盘
查看>>
改变 C/C++ 控制台程序的输出颜色和样式
查看>>
第1章 游戏之乐——让CPU占用率曲线听你指挥
查看>>
整理大数据期末考试复习提纲--概念整理
查看>>
线程--promise furture 同步
查看>>
Mybatis3.2.3+mysql第一个例子(入门)
查看>>
Nginx 代理配置
查看>>
跟锦数学171217-180630
查看>>
Python之random
查看>>
【IE大叔开玩笑】之——CSS设置IE6中容器高度的BUG
查看>>
转,python的匿名函数lambda解释及用法
查看>>
与FPGA相关的独热码
查看>>
systemd(CentOS7)启动zookeeper
查看>>
测试相关
查看>>
java.lang.ClassCastException: com.sun.proxy.$Proxy0 cannot be cast to java.sql.Connection异常问题解决...
查看>>
[CQOI 2018]社交网络
查看>>