作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在使用泛型时遇到了一个奇怪的转换问题。以下代码将抛出一个 InvalidCastException
,即使 int
显然可以转换为 double
。谁能解释这种行为以及如何绕过它?
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 领域,无论如何我已经将其更改为使用“动态”而不是“对象”,并且一切都按预期工作。感谢所有现场和快速回复。
最佳答案
但是 object
不能转换为 double
。 o
参数接受一个 object
,不是 int
。
例如,以下代码因 InvalidCastException
而失败:
object o = 1000;
double x = (double)o;
关于C# 泛型转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5324936/
我是一名优秀的程序员,十分优秀!