我不明白爲什麼這種方式不起作用,我可以直接從double
轉換爲decimal
而沒有問題,但是出人意料的是,如果它在內部通用類,這個片段更好的解釋它:泛型十進制不能從雙精度轉換爲
public class TestCollection<T>
{
public void Add(object value)
{
//When T is decimal, then I get
// System.InvalidCastException
var t = (T) value;
}
}
public void Main()
{
var t = new TestCollection<decimal>();
double doub = 10;
var decim = (decimal) doub; //Works!
t.Add(doub); //throws!
}
System.InvalidCastException是未處理由用戶代碼 的HResult = -2147467262 消息=指定的轉換無效。 Source = Wpf StackTrace: at Wpf.TestCollection`1.Add(Object value)in C:\ Users \ btord \ Source \ Repos \ Live-Charts \ Examples \ Wpf \ JimmyTheTestsGuy.xaml.cs:line 15 at Wpf.JimmyTheTestsGuy..ctor()在C:\用戶\ btord \源\回購\活圖表\實例\ WPF \ JimmyTheTestsGuy.xaml.cs:管線35 在Wpf.MainWindow..ctor()在C:\用戶\ btord \來源\回購\活圖表\例子\ WPF \ MainWindow.xaml.cs:行56 的InnerException:
這是因爲你傳遞對象,而不是增加一倍。 – steryd
爲什麼'value'對象的類型而不是'T'? – Lee
@Lee我有2個重載,一個T和一個對象,我得到當對象過載被稱爲錯誤,這是代碼 –