码迷,mamicode.com
首页 > 其他好文 > 详细

当As操作符遇上Nullable

时间:2015-11-19 00:22:35      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

  先上一段代码:

  

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的一个实例

当As操作符遇上Nullable

标签:

原文地址:http://www.cnblogs.com/rainychan/p/4976160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!