C#静态构造函数--一道.net面试题
2013-01-06 13:10 gcz 阅读(275) 评论(0) 收藏 举报静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量。 因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用。
在使用静态构造函数的时候应该注意以下几点:
1、静态构造函数既没有访问修饰符,也没有参数。 --因为是.NET调用的,所以像public和private等修饰符就没有意义了。
2、在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类。 --也就是说我们无法直接调用静态构造函数,也不可能知道静态构造函数何时会被调用。
3、一个类只能有一个静态构造函数。
4、无参数的构造函数可以与静态构造函数共存。 --尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。
5、最多只运行一次。
6、静态构造函数不可以被继承。
7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。
面试的时候会经常遇到这样一道题,一个类中有一个静态int变量count=0,一个静态构造函数,一个构造函数,构造函数内是count++,然后实例化两个class1,问count的值。
下面这段代码是我对这道题做了一点改动,能更好的理解静态构造函数。
class Program
{
static void Main(string[] args)
{
Class1 g1 = new Class1();
Class1 g2 = new Class1();
Console.ReadLine();
}
}
class Class1
{
public static int count = 0;
static Class1()
{
count++;
Console.WriteLine("静态 count="+count);
}
public Class1()
{
count++;
Console.WriteLine("构造 count="+count);
}
}
输出结果是:静态 count=1
构造 count=2
构造 count=3
根据上面的7个注意和这段代码就能很好的理解静态构造函数,实例化第一个对象的时候会执行静态构造函数和构造函数,实例化第二个对象的时候就不会执行静态构造函数了,只执行构造函数,所以count=3.
浙公网安备 33010602011771号