首页 新闻 会员 周边

as float?转换为null问题

0
悬赏园豆:5 [已解决问题] 解决于 2011-11-04 17:10

今天调试时,意外发现一个基本语法问题。

object num = 1.0;
float? jj = num as float?;

double? yy = num as double?;

执行代码后:

jj = null

yy.Value = 1.0

很明显第二种转换是正确的,而第一种转换是有问题的,这是什么原因啊?

(.net framework 4.0)

xrbx的主页 xrbx | 初学一级 | 园豆:145
提问于:2011-11-04 13:57
< >
分享
最佳答案
1

因为1.0是一个double,等价于1.0d(C#中默认小数是双精度数),因此是无法as转换成单精度的float(或者float?)的,因此jj的值为null。而double是可以转换为double?的。

收获园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2011-11-04 15:40

执行测试

object num = 1.0f;
float? jj = num as float?;
double? yy = num as double?;

结果

jj.Value = 1.0

yy = null

呵呵,结果证明你是对的,谢谢!

看来as是不支持强类型转换。

xrbx | 园豆:145 (初学一级) | 2011-11-04 17:09
其他回答(1)
0

可能是系统那样制定的。把object转化成double时是有Convert.ToDouble(num),但是却没有ToFloat的强制转换。你可以先把它转换成string类型的,再转换成float类型的。

悟行 | 园豆:12559 (专家六级) | 2011-11-04 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册