GaryZhu 2009-09-03
在向大家详细介绍C#析构函数之前,首先让大家了解下C#构造函数,然后全面介绍C#析构函数。
C#构造函数(constructor)包括实例C#构造函数和静态C#构造函数。C#构造函数与类名相同,且不能有返回值。例:
class TestClass
{
TestClass()
//实例构造函数:可以访问静态成员和实例成员,用于初始化实例成员
{
...
}
static TestClass()
//静态构造函数:只能访问静态成员,用于初始化静态成员
{
...
}
} 类的静态成员属于类所有,不必生成实例就可以访问,它是在载入包含类的应用程序时创建的,但静态方法不能访问类的实例变量和方法。通常,静态变量是在定义时就赋初始值的。
类的实例成员属于类的实例所有,不创建实例对象就无法对其进行访问,实例成员可以访问类的静态成员和其它实例成员。
class A
{
public A()
{
...
}
}
class B
{
public B(): base()
//调用基类的析构函数
{
...
}
} 常量:其值是在编译时设定的,必须是数值文字。默认状态下常量是静态的。例:
class A
{
public const double pi = 3.1415;
} 常量是编译时就确定的值,只读字段是在运行才能确定的值。比如运行时才能确定的屏幕分辨率。只读字段只能在类的C#析构函数中赋值。静态只读字段:
class A
{
public static readonly int ScreenWidth;
//静态只读字段
static A() //静态析构函数
{
ScreenWidth = 1024;
//在静态析构函数中初始化
}
} 是一道经常出现在前端面试时的问题。如果只是简单的了解new关键字是实例化构造函数获取对象,是万万不能够的。更深入的层级发生了什么呢?同时面试官想从这道题里面考察什么呢?下面胡哥为各位小伙伴一一来解密。