【C#学习】构造函数和析构函数

前言

C#中,构造函数和析构函数与C++的表现很不一样,从调用时机、修饰符等方面都有区别。C#中,构造函数可以由 public、private等修饰,而析构函数则不能有访问限制修饰符。构造函数和析构函数都没有返回值,析构函数没有参数。一个类只能有一个析构函数。而对于 struct, C#不允许程序员显示提供默认构造函数,编译器始终会提供一个默认构造函数,程序员只能定义带参数的构造函数。

构造函数

和C++一样,一旦程序员提供了一个非默认构造函数,编译器就不再提供默认构造函数,如果要使用默认构造函数的话,此时必须手动创建一个默认构造函数,编译器不会为程序自动创建。

对象初始化表达式

C# 3.0起允许在初始化时为 public 字段赋值。
        public class A
        {
            public char a;
            public char b;
            public char c;
            public static int S = 1; 
            public void f()
            {
                S = 2;
            }

            public A(int a)
            {

            }
        }

        public static void Main(string[] args)
        {
            int n = A.S;
            A a;
            a = new A(1) { a = 'a', b = 'b' }; 
        }
表达式大括号里的内容 a = 'a' , b = 'b' 在调用构造函数后才执行。

静态构造函数

C#允许在类中定义一个 static 构造函数,而且这个函数必须没有任何参数,且不能用访问限制修饰符修饰(默认为 public)。

        class A
        {
            public A() { }
            public A(int n) { }
            static A()
            {
                Console.Write("static A()");
            }
        }


        public static void Main(string[] args)
        {
            A a = new A();
            A b = new A();
        }
上述代码打印

static A() 

static 构造函数只在第一次使用该类(构建该类的一个实例)的时候调用,在程序的生命周期中,static 构造函数只会调用一次。

析构函数

析构函数用来释放资源,比如删除占有的资源,断开与数据库的连接等。在C#中,程序员无法显式调用析构函数。CLR(公共语言运行时)负责管理内存中的所有对象,并使用 GC 自动销毁无用的对象。通过静态类GC的Collect方法可以强制进行GC操作。

GC,Collect(); 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值