C#通用铸造异常

C#通用铸造异常,第1张

概述我在使用泛型时遇到了一个奇怪的转换问题.以下代码将抛出InvalidCastException,即使显然int可以强制转换为double.谁能解释这种行为以及如何绕过它? public class TestClass<T>{ public T Cast(object o) { return (T)o; }}public void Main(){ 我在使用泛型时遇到了一个奇怪的转换问题.以下代码将抛出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土地上无论如何我改变它使用’动态’而不是’对象’,一切都按预期工作.欣赏所有现场和快速回复.

解决方法 但是一个对象不能被强制转换为双精度. o参数接受一个对象,而不是int.

例如,以下代码失败并出现InvalIDCastException:

object o = 1000; double x = (double)o;
总结

以上是内存溢出为你收集整理的C#通用铸造异常全部内容,希望文章能够帮你解决C#通用铸造异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1240652.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存