我必须知道的.net:构造函数
2009-02-27 19:24
246 查看
越来越感觉基础与理论的重要,于是将这些基础写下来,以便理解与记忆。
1、构造函数:
类中的特殊方法,多用于初始化实例的数据成员,在实例化new时被自动调用;
构造函数与类的名称总是相同;
构造函数没有返回值;
一个类中可以有多个构造函数,可根据参数不同的构造函数实现类的重载,代码如下:
构造函数间的调用:可以用this关键字调用另外一个构造函数,代码如下:
运行结果为10 20 hello 。
还可以使用base关键字调用基类的构造函数。(this关键字是调用要调用的类的构造函数)
一般情况下,如果没有提供任何构造函数,编译器会在后台创建一个默认的不带任何参数的public的构造函数。
构造函数受访问修饰符的作用(public protected private);
静态构造函数:无参数,只执行一次(在第一次调用类的成员之前执行),用static修饰符;不需要访问修饰符(如public等);一个类只能有一个静态构造函数;静态构造函数只能访问类的静态成员,不能访问类的实例成员。
无参数的实例构造函数可以在类中与静态构造函数安全共存。因为静态构造函数是在加载类时执行,而实例构造函数是在创建实例时进行,所以不会冲突。
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等);一个类只能有一个静态构造函数;静态构造函数只能访问类的静态成员,不能访问类的实例成员。
无参数的实例构造函数可以在类中与静态构造函数安全共存。因为静态构造函数是在加载类时执行,而实例构造函数是在创建实例时进行,所以不会冲突。
相关文章推荐
- [你必须知道的.NET]第十九回:对象创建始末(下)
- [你必须知道的.NET]第十八回:对象创建始末
- [你必须知道的.NET]第十一回:参数之惑---传递的艺术(上)
- 你必须知道的.net学习总结之继承
- [你必须知道的.NET]第二十二回:字符串驻留 ---带着问题思考
- [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
- 读书笔记(一):【你必须知道的.NET】(0):【开篇】
- 详解.NET中六个你必须知道的重要概念(图文详解)——转
- [你必须知道的.NET]第十二回:参数之惑---传递的艺术(下)
- 读你必须知道的.NET-override,new
- 你必须知道的.NET特性和属性(转载)
- [你必须知道的.NET]第九回:品味类型---值类型与引用类型(中)-规则无边
- 【转】[你必须知道的.NET]第十二回:参数之惑---传递的艺术(下)
- 终于把你必须知道的.NET看完了
- 【转】[你必须知道的.NET]第二十回:学习方法论
- [你必须知道的.NET]第一回:恩怨情仇:is和as
- [你必须知道的.NET]第十九回:对象创建始末(下)
- [你必须知道的.NET]第十五回:继承本质论
- [你必须知道的.NET]第十八回:对象创建始末(上)
- [你必须知道的.NET]第十一回:参数之惑---传递的艺术(上)