构造函数是一种特殊的函数,用来在对象实例化时初始化对象的成员变量; 构造函数的名称必须与类相同;
当类没有定义构造函数时,编译器会自动生成一个默认的无参的构造函数,但该构造函数不会执行任何代码;
构造函数没有返回值;
构造函数在对象实例化时会被自动调用,且只运行一次;(在以下的代码中有体现!)
普通的方法在程序执行到它时被调用,且可以被对象调用多次。
因为一个类中可以有多个构造函数,所以需要通过是否有参数和参数的类型来决定输出哪个构造函数。举例:
//using System; namespace Hutao { class Keqin { public Keqin() { Console.WriteLine("我是无参的构造函数"); } public Keqin(float w) { Console.WriteLine("我是参数为float的构造函数"); } public Keqin(int t) { Console.WriteLine("我是参数为int的构造函数"); } static void Main(String[] args) { Keqin k = new Keqin(2);//由于参数为int型,所以运行参数为int的构造函数 int a; a = 666; Console.WriteLine(a); } } }
这结果是:
同理,当参数为float时,将会运行参数为float的构造函数.
在C#学习中,继承的学习是必须的,那么当父类的构造函数需要参数时,我们该怎么传参呢?先来看以下代码:
//using System; namespace Keqin { class L { public string a; public L(string a) { this.a = a; Console.WriteLine("张三的性别是:"+a); } } class Hutao:L { public Hutao():base("男") { Console.WriteLine("真帅啊!"); } public static void Main(String[] args) { Hutao hutao = new Hutao(); } } }
易知L是父类,Hutao是子类.我们可在子类中通过关键字base来向父类中的构造函数传参.