日期:2014-05-18  浏览次数:20879 次

as 的用法问题
 
GyomuProcessTreeNode 继承于TreeNode
private void trvMenu_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
  {
  Cursor.Current = Cursors.WaitCursor;

  GyomuProcessTreeNode node = e.Node as GyomuProcessTreeNode;
  }
   

为什么node为空啊

------解决方案--------------------
TreeNodeMouseClickEventArgs类中没有GyomuProcessTreeNode的某些功能,造成e.Node强制转换为GyomuProcessTreeNode类型时发生异常,即无法转换,所以为空
------解决方案--------------------
正如二楼说的,TreeNodeMouseClickEventArgs中的e.Node 是TreeNode类型,在强制转换成子类的时候会失败。
子类可以转换成父类,但是父类是不能转换成子类的
------解决方案--------------------
as是用来父类转子类?

错误。

照这么理解,所有对象都是object对象的子类,那么都可以用as了?
object o = new object();
TreeNode = o as TreeNode(); //这样也可以了?
------解决方案--------------------
不好好学语法,就喜欢记住那些应试的“黑话”,做选择题管用,写程序就不灵了。
------解决方案--------------------
父类转子类
=>

父类型引用转子类型引用,前提是多想是子类型或者继承自子类型。