一、简单记录一下构造方法使用
定义:构造函数(方法) ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
- 构造方法必须与类名相同,一个类中是可以有多个构造方法(方法的重载)
- 方法的重载:可根据参数个数不同,参数位置不同,参数类型来重载出多个方法
- 构造方法的调用只能在所在的类被实例化(new)之后,被自动调用,且只能调用无参的构造方法。有参的构造方法无法被自动调用或者实例化后引用。
- 无参构造方法一般用在来进行类中字段的赋初值。
- 如果一个类没有构造方法,C#编译器默认自动生成一个隐式无参的构造方法。
可以结合下面代码理解上面文字,代码如下(示例):
internal class Program
{
static void Main(string[] args)
{
//实例化对象
A a=new A();
//此时输出结果时时 1 2
//为什么会是1 2 而不是 2 1 呢?因为在类中,静态的方法和字段的调用顺序时由于非静态的方法和字段。注:静态指的是 static 关键字。
//为什么不是输出 1 2 3 4 5 6 呢?因为4 5 6是有参的构造方法,类在实例化时不会自动调用的。
int aa = 1;
a.A(aa);//为什么这句会报错?因为构造方法只能在类被实例化时自动调用。
}
}
public class A
{
//在visual studio 中可以输入 ctor 后,按两下tab键 快速生成公共无参构造方法。
public A()
{
Console.WriteLine(2);
}
static A()
{
Console.WriteLine(1);
}
//方法重载
public A(string a)
{
Console.WriteLine(3);
}
public A(int a)
{
Console.WriteLine(4);
}
public A(string a,int b)
{
Console.WriteLine(5);
}
public A(int b,string a)
{
Console.WriteLine(6);
}
}
注:类的执行顺序:
- 不考虑继承:静态字段,静态构造方法,实例字段,实例构造方法
- 继承关系:子类静态字段,子类静态构造方法,子类实例字段,父类静态字段,父类静态构造方法,父类实例字段,父类实例构造方法,子类实例构造方法