C#类的构造和析构

构造函数(构造方法)

构造函数是类的一种特殊方法,每次创建类的实例时候都会调用它。构造函数的主要作用是在创建对象时初始化对象。一个类必须且至少有一个构造函数,如果在定义类时没有声明构造函数,那么编译器会自动生成一个默认的构造函数,如果声明了构造函数,系统将不再提供默认构造函数。

声明构造函数的要求

  1. 构造函数不允许有返回类型,包括void类型;
  2. 构造函数的名称必须与雷鸣相同(所以构造函数往往需要使用形参)

重载构造函数

class Circle //类名为Circle
{
    private double radius;
    public static int instanceCount=0;
    //默认构造函数
    public circle() 
    {
        radius=0.0;
        instanceCount++;
    }
    //重载的构造函数
    public Circle(double initialRadius) 
    {
        radius=initialRadius;
        instanceCount++;
    }
    public double Area()
    {
        return 3.14*radius*radius;
    }
}

构造函数举例

定义一个雇员类。

class Employee
{
    private string name;
    private char gender;
    private string qualification;
    private uint salary;
    //默认构造函数
    private Employee()
    {
        qualification="研究生";
    }
    //参数化构造函数
    private Employee(string strQualification,string strName,char chrgender,uint empsalary)
    {
        qualification=strQualification;
        name=strName;
        gender=chrgender;
        salary=empSalary;   
    }
    static void Main(string[] args)
    //调用默认构造函数
    Employee objGraduate=new Employee();
    //调用参数化构造函数
    Employee objMBA=new Employee("博士","王雪娜","女",7000);
    Console.WriteLine("默认构造函数输出:\n 资格="+objGraduate.qualification);
    Console.WriteLine("\n 参数画构造函数输出:\n 资格="+objMBA.qulification);
}

析构函数

析构函数用于专门释放被占用的系统资源(在删除一个对象时,需要执行清理工作,释放对象被占用的资源),其语法格式如下:

~类名()
{
… //析构函数的主体
}

析构函数的名字业余类名相同,只是在前面添加了一个“~”。析构函数不接受任何参数,也不返回任何值。


总结

以上是对构造函数和析构函数的一些介绍,基础知识是很重要的,希望我们都能积跬步,至千里

构造函数(Constructor)是一种特殊的成员函数,它主要用于为对象分配存储空间,并对数据成员进行初始化,即对进行初始化。构造函数的特点包括: 1. 构造函数的名字必须与同名。 2. 构造函数没有返回型,可以带参数,也可以不带参数。 3. 在声明对象时,系统会自动调用构造函数构造函数不能被显式调用。 4. 构造函数可以重载,从而提供初始化对象的不同方式。 5. 如果在声明时未定义构造函数,系统会自动生成默认的构造函数,此时构造函数函数体为空。 构造函数分为实例构造函数、私有构造函数静态构造函数: 1. 实例构造函数是实现对中实例进行初始化的方法成员。 示例: ```csharp public class Cat { int i = 4; public Cat() { Console.WriteLine("The cat: " + i); } static void Main(string[] args) { Cat cat = new Cat(); Console.ReadLine(); } } ``` 2. 私有构造函数是一种特殊的实例构造函数,通常用在只包含静态成员的中。如果具有一个或多个私有构造函数而没有公共构造函数,则其他无法创建该的实例。 示例: ```csharp public class Dog { private Dog() { Console.WriteLine("this is dog"); } } public class Cat { int i = 4; private Cat() { Console.WriteLine("The cat: " + i); } static void Main(string[] args) { Dog dog1 = new Dog(); // 不可访问,受保护级别限制而无法实例化 Cat cat1 = new Cat(); Console.ReadLine(); } } ``` 3. 静态构造函数是实现对一个进行初始化的方法成员,一般用于对静态数据的初始化。静态构造函数不能有参数,不能有修饰符,也不能被调用,当被加载时,的静态构造函数会自动被调用。 示例: ```csharp public class Dog { static int i = 1; static Dog() { Console.WriteLine("the dog 默认构造函数 i=" + i); } } public class Cat { static void Main(string[] args) { Dog dog1 = new Dog(); Console.ReadLine(); } } ``` 析构函数(Destructor)在C#中没有与之对应的关键字,与构造函数相反,析构函数用于释放对象占用的资源。当对象被销毁时,析构函数会自动被调用。析构函数的特点包括: 1. 析构函数的名字与名相同,但在名前加上一个波浪线(~)以表示它是一个析构函数。 2. 析构函数没有参数,没有返回值,也不能重载。 3. 析构函数不能被显式调用,对象销毁时会自动调用析构函数。 4. 如果一个没有定义析构函数,系统会自动生成一个默认的析构函数,其函数体为空。 回答完问题后,我还有几个
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值