C#2010  构造函数
构造函数的作用是在调用时对类进行实例化,根据类的成员创建一个对象实例,其名称通常与类的名称相同,可以执行类的各种初始化任务。当代码访问一个类时,最先开始执行的就是构造函数。
1.定义构造函数
在定义构造函数时,通常需要将类的名称定义为函数名,并且将类的必要字段、必要属性等作为构造函数的参数,同时还需要定义其修饰符等,如下所示。
class ClassName
{
    public ClassName(Arguments)
    {
        //……
    }
}
在上面的代码中,就定义了一个构造函数,其中,关键字ClassName既表示类的名称,也表示构造函数的名称;关键字Arguments则表示构造函数的参数集合。需要注意的是,构造函数本身是不会返回任何数据的,因此在编写构造函数时,不需要为其设定数据类型。
例如,定义一个关于图书的类,同时为类编写一个构造函数,代码如下。
public class books
{
    public uint bId;
    public string bName;
    public string bType;
    public float bPrice;
    public long bISBN;
    public books(uint bId, string bName, string bType, float bPrice,long bISBN)
    {
        this.bId = bId;
        this.bName = bName;
        this.bType = bType;
        this.bPrice = bPrice;
        this.bISBN = bISBN;
    }
}
在上面的代码中,就定义了一个books类,并构建了一个与类名相同的构造函数。这个构造函数的参数包括5种,分别就是类的5个字段。构造函数是类中必须存在的函数。如果开发者在编写类时不编写构造函数,那么编译器会自动为该类创建一个隐含的“默认构造函数”,并为其定义一个空白参数集合。
由于构造函数本身的特殊性和功能,在调用构造函数时不能使用通常的类+函数名或实例+函数名的方法,而应该使用new关键字隐式地进行调用。例如,调用以上的构造函数实例化一本书,代码如下。
books newBook = new books(100, "网页设计三剑客(CS4中文版)标准教程", "计算机", 39.8f, 9787302233541);
在上面的代码中,通过构造函数的参数为对象的各种字段进行了赋值。在实际开发中,可以定义构造函数的参数为空,然后实例化一个空对象,再通过为字段赋值的方法定义对象的各种字段等。
例如,可以对上面的类构造函数进行修改,取消其所有参数和赋值的语句,代码如下。
writeline函数
public books() { }
在上面的代码中,构造函数被简化到了极致,在使用这一构造函数时,仅能够创建一个空的实例,实例的各种字段和属性等必须通过赋值进行定义,代码如下。
books newBook = new books();
books.bId = 100;
books.bName = "网页设计三剑客(CS4中文版)标准教程";
books.bType = "计算机";
books.bPrice = 39.8f;
books.bISBN = 9787302233541;
在对实例的字段和属性等进行读写操作时,需要确保在当前代码块中对类的成员有访问权限。例如,在入口函数main()中操作外部类的字段,就需要该字段具有public的修饰符。
2.构造函数的重载
构造函数和普通方法一样可以被重载,其重载的方法与普通的方法相同。具体来讲就是为一个类定义两个以上的构造函数,通过函数的参数差异实现构造函数的参数多样化。例如,在下面的代码中,就重载了构造函数,以实现不同的功能。
public class additive
{
    public additive(int n1, int n2)
    {
        Console.WriteLine(n1 + n2);
    }
    public additive(double n1, double n2)
    {
        Console.WriteLine(n1 + n2);
    }public additive(string str1, string str2)
    {
        Console.WriteLine(str1 + str2);
    }
}
在上面的代码中,对additive类的构造函数进行了3次重载,其参数分别为两个整数、两个双精度浮点数和两个字符串,这样,对函数使用不同类型的参数,获得的结果也不尽相同。例如,分别使用这三种重载函数,代码如下。
additive add1 = new additive(1, 2);//整数运算
additive add2 = new additive(1.5, 2.2);//浮点数运算
additive add3 = new additive("重载", "函数");
重载构造函数与重载普通的方法相同,都需要根据参数的数据类型、数量和顺序判断调用的版本,因此在重载构造函数时,其对参数的差异要求与重载普通方法相同。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。