构造函数也称构造方法,在面向对象中称为构造方法,在面向过程中称为构造函数;C#是面向对象的语言,所以以下都称为构造方法,
OK,下面我们先看一下什么是构造函数
class Dog { //创建一个狗类,声明两个属性 public string name { get; set; } public int Age { get; set; } //无参构造函数 public Dog() { }
}
上面的代码就是无参的构造方法,其实我们每次 new 对象时都必须调用构造方法,那么问题就来了,既然每次 new 对象都要调用构造方法,那么我们没写这个构造方法怎么也可以new 出来的呢?其实在我们不显式的创建构造方法的时候,系统会在后台自动隐式的创建无参的构造方法;
那既然系统会自动创建构造方法我们为什么要手动创建构造构造方法呢?那是为了创建代参的构造方法,当显式的创建构造方法时,系统不会自动的创建无参构造方法;所以要创建代参构造方时,就要先创建无参的构造方法;代码如下:
class Dog { //创建一个狗类,声明两个属性 public string Name { get; set; } public int Age { get; set; } //无参构造函数 public Dog() { } //代参构造函数 public Dog(string name,int age) { this.Name = name; this.Age = age; } }
代参方法的书写规范:
1.方法名要与类名相同;
2.构造方法不能有返回值,连void都不可以有;
说了这么多代参方法有什么用呢?
代参构造方法就是可以为对象初始化成员变量;简单,方便,快捷!!!
//普通的初始化对象 Dog dog1 = new Dog(); dog1.Name = "花花"; dog1.Age = 2; Console.WriteLine("我的名字叫做{0},今年{1}岁了",dog1.Name,dog1.Age); Console.WriteLine("++++++++++++++++++++++++++++++++++++++++++++++++"); //有代参构造方法时初始化对象 Dog dog2 = new Dog("阿黄",18); Console.WriteLine("我的名字叫做{0},今年{1}岁了",dog2.Name,dog2.Age); Console.ReadLine();
从上面的代码可以看出有,有代参构造方法时初始化对象的代码要比没有代参构造方法时简洁要的多
执行结果:
这只是构造方法的简单运用,还有很多的高级用法期待大家的挖掘: