我不明白为什么这种方式不起作用,我可以直接从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和一个对象,我得到当对象过载被称为错误,这是代码 –