首页 > 代码库 > C#类的构造函数

C#类的构造函数

对于构造函数,和C++定义的类似,注意一旦自定义类带参数的构造函数未定义无参数的构造函数,那么系统将不会提供默认构造函数;

 

静态构造函数,用来对静态字段初始化,在类创建完毕之后,类实例化之前,由系统调用;

静态构造函数没有public等控制符,没有返回值和参数;

 

对象初始化,对于类的对象实例化可以使用两种方法来声明:

new Class();  //默认构造函数

或者:

new Class {X=1,Y=2}; //也是默认构造函数;

 

析构函数,使用~标记,声明中除了名称什么都没有,只有函数体;无法显式调用析构函数,可以使用另外一个接口--Dispose接口,之后在析构函数中判断是否调用析构;

上述过程称为标准清理模式;

 

比较:构造函数和析构函数都针对实例,静态构造针对的是静态字段,只有实例才有析构函数,静态不对应实例,因此没有析构;

 

字段的readonly修饰符,在构造函数中实现类似const的特性,可以在不同的构造函数中调用不同的值,且一旦确定就无法更改,不像const那样必须初始化就固定了值;

因此readonly就相当于对于其他实例不通用的const;

 

例如:

 1 namespace ConsoleApplication1 2 { 3     class Test 4     { 5         readonly double PI = 3.14; 6         readonly int Num; 7  8         public Test(double x,double y) 9         {10             Num = 1;11         }12         public Test(int a,int b)13         {14             Num = 2;15         }16         public Test()17         {18             Num = 0;19         }20         public void printNum()21         {22             Console.WriteLine("{0}",Num);23         }24     }25     class MyClass26     {27         static void Main(string[] args)28         {29             Test t1 = new Test();30             Test t2 = new Test(1,2);31             Test t3 = new Test(1.0,2.0);32             t1.printNum();33             t2.printNum();34             t3.printNum();35             Console.ReadKey();36         }37     }38 }

 

C#类的构造函数