您的位置:首页 > 编程语言 > C#

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

2017-08-21 16:18 357 查看

前言

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(); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: