【发布时间】:2016-09-20 18:29:58
【问题描述】:
我不明白为什么这不起作用,我可以从double 直接转换为decimal 没有问题,但出乎意料的是,如果它在泛型类中,我无法进行此转换,这sn-p 解释得更好:
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 未被用户代码处理 H结果=-2147467262 Message=指定的强制转换无效。 来源=Wpf 堆栈跟踪: 在 Wpf.TestCollection`1.Add(Object value) in C:\Users\btord\Source\Repos\Live-Charts\Examples\Wpf\JimmyTheTestsGuy.xaml.cs:line 15 在 C:\Users\btord\Source\Repos\Live-Charts\Examples\Wpf\JimmyTheTestsGuy.xaml.cs:line 35 中的 Wpf.JimmyTheTestsGuy..ctor() 在 C:\Users\btord\Source\Repos\Live-Charts\Examples\Wpf\MainWindow.xaml.cs:line 56 中的 Wpf.MainWindow..ctor() 内部异常:
【问题讨论】:
-
发生这种情况是因为您传递了对象,而不是双倍。
-
为什么类型是
valueobject而不是T? -
@Lee 我有2个重载,一个用于T,一个用于对象,调用对象重载时出现错误,这是代码的一小部分