爲什麼這項工作:通用鑄造
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.有時,該值將爲對象{decimal},T將爲double,在這種情況下,將拋出InvalidCastException。但原則上這不應該是一個問題,因爲值是一個十進制數(雖然被對象裝箱),可以將其加倍。
我該如何處理這個問題?