当As操作符遇上Nullable
2015-11-18 22:48
225 查看
先上一段代码:
这是一个很普通的泛型方法,有以下几个特点:
1)将Double类型的数值转化为一个可空类型的实例返回,同时这个返回的实例的基本类型是值类型
2)这种转换使用了as操作符,as操作符的一个特点是,如果转换失败,返回的就是null。
很不幸的是,但凡TOut不是Double类型,这个转换返回的一定是NULL.
原因如下:
1 Double 经过as操作符的时候,会进行一个Boxing操作,Double,那么就变成了一个包含了Double的引用,后面尝试转换一个可空类型,很显然,非Double类型的装箱结果--一个引用,是不会跟非Double的可能类型兼容,因为一个T?只能接收 null 或者 T的一个实例
public static TOut? ConvertTo<TOut> ( Double i_input ) where TOut: struct { return i_input as TOut?; }
这是一个很普通的泛型方法,有以下几个特点:
1)将Double类型的数值转化为一个可空类型的实例返回,同时这个返回的实例的基本类型是值类型
2)这种转换使用了as操作符,as操作符的一个特点是,如果转换失败,返回的就是null。
很不幸的是,但凡TOut不是Double类型,这个转换返回的一定是NULL.
原因如下:
1 Double 经过as操作符的时候,会进行一个Boxing操作,Double,那么就变成了一个包含了Double的引用,后面尝试转换一个可空类型,很显然,非Double类型的装箱结果--一个引用,是不会跟非Double的可能类型兼容,因为一个T?只能接收 null 或者 T的一个实例
相关文章推荐
- xv6-----lazy page allocation
- 第八天
- 第一个 c++11多线程
- webView 的使用
- 问题
- Mac在线观看视频
- mybatis 处理数组类型及使用Json格式保存数据 JsonTypeHandler and ArrayTypeHandler
- 知识点
- 数据科学家
- python之生成文件列表(链接方式)
- 通信信号处理的一些基本常识
- pgbouncer+pg(fdw)+pg(datanode)分表方案
- [Cocos2d-x]创建一个新的HelloWorld
- 如何快速掌握一门技术
- maven下搭建spring mvc
- 容器
- 下拉刷新之 swipeRefreshLayout
- C++类中包含stl容器时,使用sizeof求大小的问题
- 【离散数学实验】相容关系的极大相容类的计算
- bzoj 1877: [SDOI2009]晨跑