C#构造函数
一、构造函数
构造函数用于执行类的实例的初始化。每个类都有自己的构造函数,如果我们声明了构造函数,系统就会执行我们声明好的构造函数;如果我们没有声明构造函数,编译器就会自动为我们提供一个默认的构造函数。
在访问一个类的时候,系统将首先执行构造函数中的语句。
实际上,执行构造函数时都隐式地调用了系统提供的默认构造函数base()。
如果我们在类中声明了下面的构造函数:
A(...){...}它等价于:
A(...):base(){...}在使用构造函数时,请注意下面的问题:
?构造函数的名字必须与类同名。
?构造函数可以带参数,也可以不带参数,并且没有返回类型。
?构造函数总是public类型的。如果是private类型的,表示类不能被实例化,一般用于只含有静态成员的类。
?构造函数主要完成对类的初始化工作,因此,在构造函数中不要做对类的实例进行初始化以外的事情,也不要尝试显式地调用构造函数。
下面的示例讲解了构造函数的使用:
class classTest
{
int x = 0, y = 0, count;
public classTest() // 不带参数的构造函数classTest()
{
count = 0;
}
public classTest(int x1, int y1)// 带参数的构造函数classTest(int x1,int y1)
{
x = x1;
y = y1;
}
}
二、构造函数的参数
构造函数可以不带参数,不过,有时候我们在对类进行实例化时,需要传递一定的数据,来对其中的各种数据进行初始化,这时,我们可以使用带参数的构造函数,来实现对类的不同实例的不同初始化。
在带有参数的构造函数中,类在实例化时必须传递参数,否则该构造函数不会被执行。
我们在上面声明了两个构造函数:不带参数的构造函数和带参数的构造函数。
下面讨论一下构造函数的参数的传递情况:
1. 不带参数的构造函数的参数传递
classTest obj1 = new classTest();
不带参数的构造函数,不需要传递参数。请阅读C#静态成员和非静态成员示例。
2. 带参数的构造函数的参数传递
classTest classTest1 = new classTest("BaiXue", 18);
带参数的构造函数,需要传递参数。请阅读C#中类的成员示例。