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

推荐订阅源

博客园 - 【当耐特】
Help Net Security
Help Net Security
P
Proofpoint News Feed
J
Java Code Geeks
爱范儿
爱范儿
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
Google DeepMind News
Google DeepMind News
H
Help Net Security
G
Google Developers Blog
Jina AI
Jina AI
Vercel News
Vercel News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
Lohrmann on Cybersecurity
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
GbyAI
GbyAI
B
Blog
O
OpenAI News
博客园_首页
Cisco Talos Blog
Cisco Talos Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News: Ask HN
Hacker News: Ask HN
TaoSecurity Blog
TaoSecurity Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
M
MIT News - Artificial intelligence
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
Y
Y Combinator Blog
C
Cisco Blogs
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
AI
AI
W
WeLiveSecurity
aimingoo的专栏
aimingoo的专栏
The Register - Security
The Register - Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale

博客园 - 鱼跃千里

Python抽奖程序 - 鱼跃千里 - 博客园 右键菜单添加CMD--备忘 - 鱼跃千里 - 博客园 windows 7安装sql server2005以及com (-1073737712错误)+ 8004e00f错误 Nhibernate 2.0 学习笔记,关于hbm映射文件的重要性 要签约了 [转]虚方法和抽象方法 腾讯笔试 IE7不能支持Google的Google Suggest? 两个不错的生成图片验证码代码 FCKEditor的使用---起步 [转+自己修改]将 MS SQL Server 2005 SP2 整合到安装文件 Google AdSense 申请通过了 [转]发生 LC.exe 已经退出 代码-1 错误的解决方法 [转]VS2005 SP1集成版制作 DataList等控件嵌套绑定的一个需要注意的地方 为DataList和GridView内容项添加序号 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider) [转]最佳ASP.NET编程习惯 DataList嵌套绑定数据
继承类实例化时构造函数的执行顺序
鱼跃千里 · 2008-08-21 · via 博客园 - 鱼跃千里

     最近准备去面试一个实习工作,看了一下<C#入门经典(第三版)>,看到那个构造函数的执行序列(原书176页)就动手试了一下,结果发现了一个问题

    以下摘自书中


 考虑下面的对象结构

Code

     如果以下面的方式实例化MyDerivedClass

      MyDerivedClass myObj=new MyDerivedClass();

      则事件的顺序如下

      1.执行System.Object.Object()构造函数;

      2.执行MyBaseClass.MyBaseClass()构造函数;

      3.执行MyDerivedClass.MyDerivedClass()构造函数;

     如果以下面的方式实例化MyDerivedClass

      MyDerivedClass myObj=new MyDerivedClass(4);

      则事件的顺序如下

      1.执行System.Object.Object()构造函数;

      2.执行MyBaseClass.MyBaseClass(int i)构造函数;

      3.执行MyDerivedClass.MyDerivedClass(int i)构造函数;


     如果以下面的方式实例化MyDerivedClass

      MyDerivedClass myObj=new MyDerivedClass(4,8);

      则事件的顺序如下

      1.执行System.Object.Object()构造函数;

      2.执行MyBaseClass.MyBaseClass()构造函数;

      3.执行MyDerivedClass.MyDerivedClass(int i, int j)构造函数;


     注意上面的红色部分,为什么会这样执行呢,我自己做了一下实验,发现不是这样执行的

     事件的顺序如下

      1.执行System.Object.Object()构造函数;

      2.执行MyBaseClass.MyBaseClass()构造函数;

      3.执行MyDerivedClass.MyDerivedClass(int i)构造函数;

     看看我的代码(用vs2008,为了排除是不是由于.net 3.5的原因,我特意换vs05又试了一遍)

Code

执行结果截图

 

看来应该是书上的印刷错误了,莫非还有什么其他的原因?

PS:顺便再记一下可以改变实例化执行的构造函数的两个关键字,base,this,用法也很简单,就在构造函数方法签名后面加":base(int i)"这样类似的语句,就会去执行它父类中有相同签名的构造函数.