为什么这个可以工作:
但不包括这个:
第二个例子抛出了以下异常:
decimal dec = new Decimal(33);
double dd = (double) dec;
Console.WriteLine(dd);
但不包括这个:
decimal dec = new Decimal(33);
object o = (object)dec;
double dd = (double) o;
Console.WriteLine(dd);
第二个例子抛出了以下异常:
这个问题源自一个情况,我有一个泛型方法。System.InvalidCastException: 指定的转换无效。
public T GetValue(string q)
该方法从数据源获取值。这些值的类型是未知的,但该方法假设它可以将值强制转换为T。有时候值会是object{decimal}和T会是double,在这种情况下会抛出InvalidCastException异常。但原则上这不应该是一个问题,因为该值是一个十进制数(尽管被封装在对象中),可以强制转换为double。
我如何以一般化的方式处理这个问题?