惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Troy Hunt's Blog
Google DeepMind News
Google DeepMind News
G
Google Developers Blog
F
Full Disclosure
N
Netflix TechBlog - Medium
C
Check Point Blog
Recent Announcements
Recent Announcements
MyScale Blog
MyScale Blog
The Register - Security
The Register - Security
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
H
Help Net Security
F
Fortinet All Blogs
P
Proofpoint News Feed
I
InfoQ
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
Vercel News
Vercel News
A
About on SuperTechFans
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
B
Blog RSS Feed
S
Securelist
Y
Y Combinator Blog
C
Cybersecurity and Infrastructure Security Agency CISA
D
DataBreaches.Net
B
Blog
The Hacker News
The Hacker News
Security Latest
Security Latest
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V
Vulnerabilities – Threatpost
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
Forbes - Security
Forbes - Security
T
The Exploit Database - CXSecurity.com
Latest news
Latest news
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
AWS News Blog
AWS News Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Heimdal Security Blog
C
Cisco Blogs

博客园 - jjxstudio

关于silverlight 前景的讨论,不吐不快 没有说说新的async ctp吗? 新blog地址 青春咖啡馆 2010 计划 axapta 断开的记录集 django 1.1 south 理解zope3 的适配器 准备放弃django openerp新的web-client openerp view design elements中的col和colspan - jjxstudio 上下文 怎样才算是一个好的windows forms 应用程序框架? 自定义django admin 之一 django admin search_fields 今天的折腾 杭州:一个python的工作机会 ironpython的下一个版本
a中的this和element
jjxstudio · 2009-05-02 · via 博客园 - jjxstudio

在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,则会声明这行

     super();

     //这里this 是form1范围,也就是element,两者一样

  }

  class Button1 extends FormButtonControl{

       super();

       //你的代码

      print classId2Name(classIdGet(this)));

     print element.name();

   }

}

}

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

不过上面代码仅是个人推测,但这种编码在java语言中是会通过的,c#就不行,因为对内部类的处理机制不一样,而且c#也不允许Form1 element=this这样的变量声明, 这其实告诉我们,对比语言时得确有个此长彼短的问题。不能简单的评定谁好谁坏。

上次,有网友问我,我的blog上说所的填空式代码生成是什么意思。其实我所说的就是ax的代码生成机制,在ax中,只有方法覆盖是编程者接触的(参见加黑的部分),其它地方是编程者所不触及的。这通过提供类似ax aot的窗口可以实现。填充式代码生成更易于达到封闭代码,减少出错点,提高效率的目的