C#构造函数的特性及使用情况是如何的呢?下面我们分两个部分来向你讲解:
C#构造函数的特性一、
什么是C#构造函数?Construct,Function
C#构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.
C#构造函数具有一些特殊的性质:
(1)C#构造函数的名字必须与类同名;
(2)C#构造函数没有返回类型,它可以带参数,也可以不带参数;
(3)声明类对象时,系统自动调用构造函数,构造函数不能被显式调用;
(4)C#构造函数可以重载,从而提供初始化类对象的不同方法;
(5)若在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数的函数体为空.
(6)静态构造函数,用static修饰,用于初始化静态变量,一个类只允许有一个构造函数,在类实例化时加载,这时修饰符public、private失去作用.
(7)可以使用public、protected、private修饰符。.
(8)引用父类构造时用():base()方法,引用自身重载的构造使用():this(int para).
(7)可以使用public、protected、private修饰符。
C#构造函数的特性之C#构造函数使用时注意事项:
1、定义了一个带参构造函数后,最好定义一个无参构造函数,这样可以避免子类调用时出错
2、调用基类构造函数:base() 或 :base(参数列表) 调用本类其它构造函数 :this() 或 :this(参数列表)
3、只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。
C#构造函数的特性二、
C#构造函数的结构层次关系或者说执行顺序是怎样的?Layer,Transfer,Execute
从基类开始构造对象。
- public class MyBaseClass
- {
- public MyBaseClass()
- {
- Console.WriteLine("In MyBaseClass()");
- }
- public MyBaseClass(int i)
- {
- Console.WriteLine("In MyBaseClass(int i)");
- }
- }
- public class MyDerivedClass : MyBaseClass
- {
- public MyDerivedClass()
- {
- Console.WriteLine("In MyDerivedClass()");
- }
- public MyDerivedClass(int i)
- {
- Console.WriteLine("In MyDerivedClass(int i)");
- }
- //public MyDerivedClass(int i, int j)
- //{
- //Console.WriteLine("In MyDerivedClass(int i,int j)");
- //}
- public MyDerivedClass(int i, int j)
- : base(i)
- {
- Console.WriteLine("In MyDerivedClass(int i,int j):base(i)");
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- //Event1
- MyDerivedClass myObj1 = new MyDerivedClass();
- Console.WriteLine();
- //Event2
- MyDerivedClass myObj2 = new MyDerivedClass(4);
- Console.WriteLine();
- //Event3
- MyDerivedClass myObj3 = new MyDerivedClass(4,8);
- Console.WriteLine();
- Console.ReadKey();
- }
- }
C#构造函数执行程序输出:
- In MyBaseClass()
- In MyDerivedClass()
- In MyBaseClass()
- In MyDerivedClass(int i)
- In MyBaseClass(int i)
- In MyDerivedClass(int i,int j):base(i)
很明显,只有在用base显示调用父类的构造函数时,程序才不会默认的调用不带参数的构造函数。
C#构造函数的特性及使用就向你介绍到这里,希望对你理解和使用C#构造函数的特性有所帮助。
【编辑推荐】