C#基础——构造函数、析构函数

2023-12-16 17:33:39

C#基础——构造函数、析构函数

1、构造函数

构造函数是一种特殊的方法,用于在创建类的实例时进行初始化操作。构造函数与类同名,并且没有返回类型。

构造函数在对象创建时自动调用,可以用来设置对象的初始状态、分配内存、初始化字段等操作。一个类可以定义多个构造函数,它们可以有不同的参数列表,称为重载构造函数。

构造函数语法结构:

class ClassName
{
    // 默认构造函数
    public ClassName()
    {
        // 构造函数的代码逻辑
    }

    // 带参数的构造函数
    public ClassName(parameters)
    {
        // 构造函数的代码逻辑
    }
}
class Person
{
    //get与set 代表展开了属性赋值取值的过程
    //get表示当使用这个属性的时候会执行的代码
    //set表示为这个属性赋值的时候会执行的代码
    public string Name { get; set; }
    public int Age { get; set; }

    // 默认构造函数
    public Person()
    {
        //this 关键字 代表当前实例的对象,属性都要 对象.属性
	    //在当前类中,this代表当前实例的对象,开发者不需要在创建了,
	    //如果不写this程序会自动补充
        this.Name = "guobeibei";
        Age = 18;
    }

    // 带参数的构造函数(重构)
    //重构是指在同一个类中定义多个不同参数的构造函数
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
    
	//还可以声明静态构造函数
	static People() {
  		//注意:静态构造函数不能直接进行调用,是自动调用的
  		//(访问实例构造函数的时候会自动激活静态构造函数)
  		Console.WriteLine("这是静态构造函数");
	}
}

// 创建Person对象并使用构造函数进行初始化
Person person1 = new Person(); // 使用默认构造函数
Console.WriteLine(person1.Name); //郭贝贝

// 使用带参数的构造函数(重构)
Person person2 = new Person("郭贝贝同学", 19); 
Console.WriteLine(person2.Name); // 郭贝贝同学
Console.WriteLine(person2.Age); // 19

构造函数与普通函数的区别?

两者不同点构造函数普通函数
触发时机在创建类的实例(对象)时自动触发,用于初始化对象的成员变量。需要通过对象或类名来调用,根据需要手动触发执行。
返回类型没有返回类型,包括void。它们的目的是初始化对象,而不是返回值。具有返回类型,可以通过return语句返回值。
方法名与类名相同,用于标识该构造函数用于创建对象的初始化工作。可以自定义方法名,以便更好地描述方法的功能。
调用方式由编译器根据对象的创建来自动调用,且每次创建对象时只能调用一次构造函数。需要通过对象或类名显式调用,可以多次调用。
对象初始化用于初始化对象的成员变量,为它们分配内存并设置初始值。可以对对象进行操作和修改,但不会影响对象的创建和初始化。

构造函数是用于对象的初始化,而普通函数主要用于对象的操作和行为。构造函数在创建对象时自动调用,而普通函数需要手动调用。

2、析构函数

构造函数在调用的时候会分配一部分内存,这块内存被放在了堆上,c#内存回收机制属于自动回收,原则意义上来讲不需要手动释放,但是如果能够结合良好的编码习惯,可以搭配类似于析构函数之类的方法,让内存释放更高效。

析构函数:当引用对象被回收时,会调用该函数,可以在此处做一些内存回收,一个类中只能有一个析构函数,不能继承,也不能重载,不能被主动调用,没有修饰符,没有参数。

语法结构

class MyClass
{
    //析构函数(前面带一个 ~)
    ~MyClass()
    {
        // 在这里编写析构函数的代码
    }
}
class People {
  //设置一个定时器:属于连续执行的属性,可能不会被程序自动释放,容易一直占用内存
  Timer timer { get; set; }
  public People() {
    Console.WriteLine("这是构造函数");
  }
  
  ~People() {
    timer = null;
  }
}

文章来源:https://blog.csdn.net/qq_51810680/article/details/135034571
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。