2023/11/1——C#——构造函数、静态类、析构函数

本文详细解析了C#中构造函数(包括实例构造、私有构造和静态构造)的作用、区别,以及静态类的特性、静态类的创建和使用,最后介绍了析构函数的概念和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.构造函数

         //1.本质就是方法
         //2.作用 类创建对象时 使用的特殊方法
         //3.类默认存在构造函数   
         //4.构造函数的名字 一定要和类名相同
         //5.构造函数分为实例构造函数、私有构造函数和静态构造函数 
         //6.构造函数没有返回类型,它可以带参数,也可以不带参数
         //7.构造函数自己定义时,会覆盖系统默认的    自己定义构造函数 原因:系统默认的功能无法满足需求
         //8.实例构造一般使用public
         //9.私有构造函数使用private  不希望其他类 创建自身的对象时  (没有实例成员时)
         //10.静态构造函数  默认系统会自带   在类创建时 用来初始化 所有的 静态成员   
         //11.静态构造函数既没有访问修饰符,也没有参数
         //12..无参数的实例构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突

构造一个People类:

 internal class People {
     //字段
     private int _age;
     //属性
     public int Age{ get { return _age; } }
     public string Name { get; set; }
     //方法   
     public void Eat(){

         Console.WriteLine($"{Name}吃饱了");
     }

     public static void PeopleStaicMothod() {

         Console.WriteLine("人会死亡");

     }
     public static void PeopleStaicMothod1(People p)
     {
         Console.WriteLine($"{p.Name}会死亡");
     }
 }

构造一个Person类:

 internal class Person
 {
     public int Id { get; set; }
     public string Name { get; set; }

     public readonly int readonlyNumber = 100;
     public readonly int readonlyNumber1;
     //实例构造函数
     public Person()
     {
         readonlyNumber1 = 200;
         Console.WriteLine("Person构造函数");
     }

     public Person(int id,string name) { 
         Name = name;
         Id = id;
     }
 }

Person类里的  私有构造函数 和  静态构造函数:

 internal class Person2
 {
     //私有构造函数
     private Person2()
     {
     }
     public static int ID { get; set; }
     public static void Person2Mothod()
     {

         Console.WriteLine("Person2Mothod");
     }

     //静态构造函数
    static Person2() {

         Console.WriteLine("静态构造函数调用");

     }

 }

类和 方法的 实例化 以及调用:

 People zhangsan = new People();
 zhangsan.Name = "张三";
 zhangsan.Eat();
 People lisi = new People();
 lisi.Name = "李四";
 lisi.Eat();

 People.PeopleStaicMothod();
 People.PeopleStaicMothod1(zhangsan);
 People.PeopleStaicMothod1(lisi);

 Person person1 = new Person(10,"zhangsan");
 //person1.Id = 10;
 //person1.Name = "zhangsan";
 Console.WriteLine(person1.Id);
 Console.WriteLine(person1.Name);
 
 Person person2 = new Person(20, "lisi");
 Console.WriteLine(person2.Id);
 Console.WriteLine(person2.Name);

 Person person3 = new Person();
 person3.Id = 30;
 person3.Name = "wangwu";

 Console.WriteLine(person3.readonlyNumber);
 Console.WriteLine(person3.readonlyNumber1);

 Person2.ID = 1000;
 Person2.Person2Mothod();

2.静态类

         //静态类 :
 //1.使用static描述的类 
 //2.不能创建实例对象 也不能定义实例成员  只能定义静态相关成员
 //3.制作工具类时  可以使用
 //4.私有构造函数  限制了外部创建对象   静态类任何地方无法创建对象 没有提供实例构造函数 有静态构造函数
 //5.静态类 无法被继承

静态类的创建:

 public static class StaticClass {

     private static int _age;

     public static int Age { get { return _age; } set { _age = value; } }
     public static void StaticClassMothod() { }

     //求和
     public static void Sum(int a,int b) {

         Console.WriteLine(a+b);
     }

     //静态构造函数
     static StaticClass() { 
         
     }
 }

静态类的使用:

StaticClass.Sum(1, 2);

3.析构函数

         // 析构函数:
 //1.垃圾回收程序最终销毁对象之前调用的方法,该方法称为析构函数
 //2.构造函数是成对出现  一个负责创建对象  一个负责销毁对象
 //3.析构函数通常形式如下: ~类名(){}
 //4.类默认自带析构函数
 //5.析构函数没有返回值,且不带任何参数。

构造函数 和 析构函数 的区别:

 //构造函数
 public People() {

     Console.WriteLine("对象被创建");
 }
 //析构函数
 ~People() {

     Console.WriteLine("对象被销毁");       
 }

析构函数的使用:

 People zhangsan = new People();
 zhangsan = null;
 //强制开启回收
 GC.Collect();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值