构造函数详解
什么是构造函数,构造函数是我们使用new关键字实例化对象时调用执行该对象的构造函数。
构造函数大类分为无参构造函数和有参构造函数,其次是静态和非静态构造函数
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Test
2 {
3 int i;
4 private char p1;
5 private char p2;
6
7 static Test()
8 {
9
10 }
11 public Test()
12 {
13 i = 1;
14 Console.WriteLine("I am Test 默认构造函数 i={0}", i);
15 }
16 public Test(string str)
17 {
18 //i = 1;
19 Console.WriteLine("I am Test 默认构造函数 i={0}", str);
20 }
21 public Test(string str, string dt)
22 {
23 Console.WriteLine("I am Test 默认构造函数 i={0}", str);
24 Console.WriteLine("I am Test 默认构造函数 i={0}", dt);
25 }
26
27 public Test(char p1, char p2)
28 {
29 // TODO: Complete member initialization
30 this.p1 = p1;
31 this.p2 = p2;
32 Console.WriteLine("I am Test 默认构造函数 i={0}", p1);
33 Console.WriteLine("I am Test 默认构造函数 i={0}", p2);
34 }
35 }
36 public class ProgramTest
37 {
38 static void Main(string[] args)
39 {
40 Test t = new Test('3', '2');
41 Console.Read();
42 }
一个类中可以自定义多个构造函数
其中静态构造函数特殊:
静态构造函数一个类中只能定义一个,而且最多只能运行一次(因为静态在程序运行时默认就自动创建开辟空间,不需要我们去new他们,也就是实例化)
当类中的静态成员有初始值时,没有声明静态构造函数,那么编译器会自动生成默认的静态构造函数。
静态构造函数不可以被继承
非静态构造函数:
当有多个构造函数时,在实例化的时候根据你提供的参数编译器决定调用哪一个构造函数
当构造函数是私有的private时 有且只有一个构造函数时 类不能实例化