C#构造函数及其的结构层次关系说明

开发 后端
C#构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.本文将向您详细介绍C#构造函数及其的结构层次关系。

一、C#构造函数 Construct,Function

构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.

构造函数具有一些特殊的性质:

(1)构造函数的名字必须与类同名;

(2)构造函数没有返回类型,它可以带参数,也可以不带参数;

(3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;

(4)构造函数可以重载,从而提供初始化类对象的不同方法;

(5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.

(6)静态构造函数,用static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实例化时加载,这时修饰符public、private失去作用.

(7)可以使用public、protected、private修饰符。.

(8)引用父类构造时用():base()方法,引用自身重载的构造使用():this(int para).

(7)可以使用public、protected、private修饰符。

二、C#构造函数的结构层次关系或者说执行顺序是怎样的?Layer,Transfer,Execute

从基类开始构造对象。

  1. publicclassMyBaseClass  
  2. {  
  3. publicMyBaseClass()  
  4. {  
  5. Console.WriteLine("InMyBaseClass()");  
  6. }  
  7. publicMyBaseClass(inti)  
  8. {  
  9. Console.WriteLine("InMyBaseClass(inti)");  
  10. }  
  11. }  
  12. publicclassMyDerivedClass:MyBaseClass  
  13. {  
  14. publicMyDerivedClass()  
  15. {  
  16. Console.WriteLine("InMyDerivedClass()");  
  17. }  
  18. publicMyDerivedClass(inti)  
  19. {  
  20. Console.WriteLine("InMyDerivedClass(inti)");  
  21. }  
  22. //publicMyDerivedClass(inti,intj)  
  23. //{  
  24. //Console.WriteLine("InMyDerivedClass(inti,intj)");  
  25. //}  
  26. publicMyDerivedClass(inti,intj)  
  27. :base(i)  
  28. {  
  29. Console.WriteLine("InMyDerivedClass(inti,intj):base(i)");  
  30. }  
  31. }  
  32. classProgram  
  33. {  
  34. staticvoidMain(string[]args)  
  35. {  
  36. //Event1  
  37. MyDerivedClassmyObj1=newMyDerivedClass();  
  38. Console.WriteLine();  
  39. //Event2  
  40. MyDerivedClassmyObj2=newMyDerivedClass(4);  
  41. Console.WriteLine();  
  42. //Event3  
  43. MyDerivedClassmyObj3=newMyDerivedClass(4,8);  
  44. Console.WriteLine();  
  45. Console.ReadKey();  
  46. }  
  47. }  
  48.  
  49. 程序输出:  
  50.  
  51. InMyBaseClass()  
  52.  
  53. InMyDerivedClass()  
  54.  
  55. InMyBaseClass()  
  56.  
  57. InMyDerivedClass(inti)  
  58.  
  59. InMyBaseClass(inti)  
  60.  
  61. InMyDerivedClass(inti,intj):base(i)  

很明显,只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。

【编辑推荐】

  1. C# WebService发布与调用浅析
  2. 简明教程 C# Webservice实例
  3. C#中定义装箱和拆箱详解
  4. 浅谈C#类型系统
  5. 三种不同的C#异常类型
责任编辑:冰荷 来源: xsrss
相关推荐

2010-01-12 10:21:42

C++语言

2009-08-13 14:24:44

C#结构体构造函数

2009-08-13 14:36:40

C#结构体构造函数

2009-07-31 14:15:38

C# 构造函数

2009-08-24 18:09:13

C#构造函数

2009-07-30 15:24:13

C#析构函数C#构造函数

2009-08-13 17:38:42

C#构造函数

2009-08-20 14:28:00

C#静态构造函数

2009-07-31 15:37:45

C#静态构造函数

2009-09-04 11:15:07

选择C#构造函数

2009-08-27 16:18:47

C#类C#结构体

2009-07-31 15:44:02

C#静态构造函数

2009-08-14 09:15:28

C#调用构造函数

2009-08-14 17:24:28

C#构造函数和析构函数

2009-08-14 09:43:59

C#复制构造函数

2009-08-14 09:58:09

C#复制构造函数

2009-08-13 18:15:06

C#继承构造函数

2009-08-13 17:30:30

C#构造函数

2009-09-18 09:02:45

CLR Via C#

2009-08-13 18:02:11

C#静态构造函数
点赞
收藏

51CTO技术栈公众号