asp.net(c#) 构造函数(方法)
 
 

在创建对象的时候,能否给不同的对象灵活地赋予不同的属性的初值,并保证没有空值的出现?这个任务可以由构造函数来完成。

构造函数是类的一种特殊方法,它的特殊性主要体现在如下的几个方面:

(1)构造函数的方法名与类名相同。
(2)构造函数没有返回类型。
(3)构造函数的主要作用是完成对类对象的初始化工作。
(4)构造函数不能由编程人员显式地直接调用。
(5)在创建一个类的新对象时,系统会自动调用该类的构造函数为新对象初始化。

下面看一个简单的例子:

protected void Page_Load(object sender, EventArgs e)
{
        student num1 = new student();
}

class student
{
        public student()
        {
            HttpContext.Current.Response.Write("学生资料:");
        }
}

结果输出:

学生资料:
 
 

可见,student类的构造函数叫做student(),他没有返回类型,但是可以拥有方法的修饰符,也可以利用参数列表输入有关信息,如下面的例子就是调用构造函数时传入name参数:

protected void Page_Load(object sender, EventArgs e)
{
        student num = new student("阿会楠");
 }

class student
{
        public student(string name)
        {
            HttpContext.Current.Response.Write(name);
        }
}

       构造函数的调用是在用new运算符创建类对象时由系统自动完成的,构造函数的参数传递和形实结合过程也是由系统在调用的时候同时自动完成。构造函数在程序设计中非常有用,它可以为类的成员变量进行初始化工作,很多程序员在编程过程中时常会疏忽对变量的初始化,使用构造函数可以避免这种情况,并且可以实现一次完成对类的所有实例对象的初始化,这免除了调用程序对每个实例对象都要进行初始化的繁琐工作。构造函数另一个作用是引入更多的灵活度,使得初始化工作不仅仅包括成员变量的赋值,还可以有更复杂的操作,如判断条件是否成立,若不成立跳出。

       申明类时,可以不定义构造函数,此时系统会自动为该类生成一个默认的构造函数,这个构造函数的名字与类名相同,它没有任何形式参数,也不完成任何操作。

       这里你可能会问,为什么构造函数名一定要与类名相同,你换个角度想下,编译时必须知道哪个是构造函数,采用与类同名的方式显然是最简单最合理的。

需要注意的是:我们知道构造函数是不返回值的,但你不可以加void,加了的话就不是构造函数了,而是普通函数,加了的话这个函数就不会被自动调用了,很可能会出现这样的错误:

 

成员名称不能与它们的封闭类型相同