码迷,mamicode.com
首页 > 其他好文 > 详细

C#类的构造函数

时间:2014-09-10 21:04:41      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   使用   ar   div   sp   

对于构造函数,和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 MyClass
26     {
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#类的构造函数

标签:style   blog   color   io   os   使用   ar   div   sp   

原文地址:http://www.cnblogs.com/lhyz/p/3965099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!