因为1.0是一个double,等价于1.0d(C#中默认小数是双精度数),因此是无法as转换成单精度的float(或者float?)的,因此jj的值为null。而double是可以转换为double?的。
执行测试
object num = 1.0f;
float? jj = num as float?;
double? yy = num as double?;
结果
jj.Value = 1.0
yy = null
呵呵,结果证明你是对的,谢谢!
看来as是不支持强类型转换。
可能是系统那样制定的。把object转化成double时是有Convert.ToDouble(num),但是却没有ToFloat的强制转换。你可以先把它转换成string类型的,再转换成float类型的。