a中的this和element

在qiuhao上我回复一个网友的贴子,但觉的这里可以展开的点很多。
 
 
在窗体编程中,element 通常就是指formrun 也就是我们看到的form
你在为哪个对象编写代码,this就是哪个对象,比方说你为formbuttoncontrol写click方法,则this就是指这个按钮,如果我们覆盖form的init方法,那么里面的this其实就是element


深入探讨这个就是ax的代码生成机制有关了,ax为了达到分层的目的,没有采用现在编程中的事件机制,而是用继承的方式,当创建一个窗体,增加一个按钮时,其实就是生成一个类
class Form1 extends SysSetupFormRun{

   private Form1 element=this;
   public Button1 Button1; //如果Button1的authdeclartion为yes,则会声明这行

   void init(){
     super();
    
     //这里this 是form1范围,也就是element,两者一样
  }
  class Button1 extends FormButtonControl{

     void clicked(){
       super();

       //你的代码
      print classId2Name(classIdGet(this)));

     print element.name();
   }
}

}

 
看这个生成的代码,就会了解ax 中this,element的具体指向了

不过上面代码仅是个人推测,但这种编码在java语言中是会通过的,c#就不行,因为对内部类的处理机制不一样,而且c#也不允许Form1 element=this这样的变量声明, 这其实告诉我们,对比语言时得确有个此长彼短的问题。不能简单的评定谁好谁坏。
 
上次,有网友问我,我的blog上说所的填空式代码生成是什么意思。其实我所说的就是ax的代码生成机制,在ax中,只有方法覆盖是编程者接触的(参见加黑的部分),其它地方是编程者所不触及的。这通过提供类似ax aot的窗口可以实现。填充式代码生成更易于达到封闭代码,减少出错点,提高效率的目的
 

转载于:https://www.cnblogs.com/jjx/archive/2009/05/02/1447719.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值