在使用泛型时,我遇到了一个奇怪的转换问题。尽管明显可以将int
转换为double
,但以下代码将抛出InvalidCastException
异常。有谁能解释这种行为以及如何绕过它吗?
public class TestClass<T>
{
public T Cast(object o)
{
return (T)o;
}
}
public void Main()
{
TestClass<double> w = new TestClass<double>();
double x = w.Cast(10);
}
编辑:
既然我已经在 .net 4.0 的领域里了,我已经将它改为使用“动态”而不是“对象”,一切都如预期般工作。感谢所有准确且快速的回复。