这个特殊的问题更多的是试图看到编译器消息背后的原因而不是解决问题,但我希望它没关系.
假设我们有:
class Foo { public static explicit operator Foo(Bar bar) { return new Foo(); } }
Bar的实施并不重要.现在,当您尝试以下操作时,会发生异常:
object obj = new Bar(); Foo foo = (Foo)obj;
它给出了InvalidCastException,这是正确的,因为我们没有对象类型的转换运算符.但是异常消息是:
system.invalidCastException: Unable to cast object of type ‘Bar’ to type ‘Foo’
这有点误导,因为我显然可以将类型Bar的对象转换为Foo类型.我希望编译器告诉我,我基本上是在尝试构建System.Object类型的对象,而不是Bar.
我的理解是否存在缺陷?如果是这样,这种行为背后的原因是什么?
提前致谢
编辑:为了清楚,我知道如何处理这个问题,而且Foo foo =(Foo)(Bar)栏就可以了.我对错误信息本身更感兴趣.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。