父类向子类强制转换

[复制链接]
查看11 | 回复5 | 2011-1-25 14:15:34 | 显示全部楼层 |阅读模式
“强制转换不会更改 B 对象,但您的 B 对象视图将限制为 A 的数据和行为。将 B 强制转换为 A 后,可以将该 A 重新强制转换为 B。并非 A 的所有实例都可强制转换为 B,只有实际上是 B 的实例的那些实例才可以强制转换为 B。” 上面这段话是我在c# specification里面找到的。而你的情况,老实说我感到有些不能理解,因为如果rootNode是从子类型转换而来的,那么rootNode实际类型就是一个BGTreeNode,这种转换是被c#所认可的。而你却说失败了,我猜测的可能是添加到treeview节点后丢失了类型信息所致。...
回复

使用道具 举报

千问 | 2011-1-25 14:15:34 | 显示全部楼层
父类不可以强转成子类你可以在BGTreeNode 中加个方法,返回一个TreeNode,然后调用这个方法...
回复

使用道具 举报

千问 | 2011-1-25 14:15:34 | 显示全部楼层
强烈建议不要进行父类向子类强制转换.....如果需要做此类型的程序处理可以使用桥接设计模式等方式间接实现........
回复

使用道具 举报

千问 | 2011-1-25 14:15:34 | 显示全部楼层
这类问题最简单有效的方法就是直接看runtime的值。如果让我猜测原因,我想可能你遍历各节点时把根节点算进去了。...
回复

使用道具 举报

千问 | 2011-1-25 14:15:34 | 显示全部楼层
你想想为什么 这样可以:TreeNode rootNode=new BGTreeNode();BGTreeNode bgNode = (BGTreeNode)rootNode;不会出错。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行