您的位置:首页 > 其它

我必须知道的.net:构造函数

2009-02-27 19:24 246 查看
越来越感觉基础与理论的重要,于是将这些基础写下来,以便理解与记忆。

1、构造函数:

类中的特殊方法,多用于初始化实例的数据成员,在实例化new时被自动调用;

构造函数与类的名称总是相同;

构造函数没有返回值;

一个类中可以有多个构造函数,可根据参数不同的构造函数实现类的重载,代码如下:
protected void Page_Load(object sender, EventArgs e)
{
//实现对类ParentAA的三个重载
//ParentAA parent = new ParentAA();
//ParentAA parent = new ParentAA(600, 200);
ParentAA parent = new ParentAA(600,200,"sss");

lblName.Text = parent.i.ToString();

}
}

public class ParentAA
{
public int i, j;
public string s;

public ParentAA()
{
this.i = 10;
this.j = 20;
}

public ParentAA(int Inti, int Intj)
{
this.i = Inti;
this.j = Intj;
}

public ParentAA(int Inti, int Intj, string msg)
{
this.i = Inti;
this.j = Intj;
this.s = msg;
}
}


构造函数间的调用:可以用this关键字调用另外一个构造函数,代码如下:

public partial class FrmTwo : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
ParentAA parent = new ParentAA();//调用不带参数的构造函数
//

lblName.Text = parent.i.ToString();//i=构造函数1的值
Label1.Text = parent.j.ToString();//j=构造函数1的值
Label2.Text = parent.s;//构造函数1中没有对赋值,但此时s=构造函数3的值

}
}

public class ParentAA
{
public int i, j;
public string s;

public ParentAA()//构造函数1
: this(1111, 222222, "hello")//调用构造函数3
{
this.i = 10;
this.j = 20;
}

public ParentAA(int Inti, int Intj)//构造函数2
{
this.i = Inti;
this.j = Intj;
}

public ParentAA(int Inti, int Intj, string msg)//构造函数3
{
this.i = Inti;
this.j = Intj;
this.s = msg;
}
}


运行结果为10 20 hello 。

还可以使用base关键字调用基类的构造函数。(this关键字是调用要调用的类的构造函数)

一般情况下,如果没有提供任何构造函数,编译器会在后台创建一个默认的不带任何参数的public的构造函数。

构造函数受访问修饰符的作用(public protected private);

静态构造函数:无参数,只执行一次(在第一次调用类的成员之前执行),用static修饰符;不需要访问修饰符(如public等);一个类只能有一个静态构造函数;静态构造函数只能访问类的静态成员,不能访问类的实例成员。

无参数的实例构造函数可以在类中与静态构造函数安全共存。因为静态构造函数是在加载类时执行,而实例构造函数是在创建实例时进行,所以不会冲突。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: