关于Nullable 类型

 

昨天同事跟我说尽量少用try{}catch(),因为比较耗性能,  对于值类型的转型可以用Nullable类型转然后判空, 如:

float? size = value as float?;
if (size.HasValue)
    ...

改写后发现原来的功能不工作了,,size始终得不到值,,跟踪后发现value必须为float型才能转型成功。
然而自己平时都是习惯于不显示声明数值的类型   如:item.Tag = 3;  item.Tag = 4.5;   

问题就出在于这样写,,赋值3系统会默认用int类型, 4.5系统会用double类型, 所以导致了上面的size始终得不到值,  看来以后要养成习惯使用  item.Tag = 4.5f;

原文地址:https://www.cnblogs.com/anders06/p/1248753.html