静态构造函数主要用来初始化静态变量的值.
这种函数只执行一次,在第一次创建类的对象的时候,就会自动调用它.
可以参考一下下面的代码.
using System;
class Welcome
{
public Welcome()
{
Console.WriteLine("构造函数 Welcome()");
}
static Welcome()
{
Console.WriteLine("构造函数 static Welcome()");
}
static void Main()
{
new Welcome();
new Welcome();
Console.ReadLine();
}
}
执行结果:
构造函数 static Welcome()
构造函数 Welcome()
构造函数 Welcome()
又比如下面的代码
public class User
{
static private int count;
static public int Count
{
get
{
return count;
}
}
public User()
{
count++;
}
static User()
{
count = 0;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
Response.Write("User Count = " + User.Count);
Response.Write("<hr/>Creating User Alex.");
User Alex = new User();
Response.Write("<br/>User Count = " + User.Count);
Response.Write("<hr/>Creating User Rob.");
User Rob = new User();
Response.Write("<br/>User Count = " + User.Count);
Response.Write("<hr/>Creating User Jake.");
User Jake = new User();
Response.Write("<br/>User Count = " + User.Count);
}
这段代码的执行结果是:
User Count = 0
----------------------------------------------------------------------
----------
Creating User Alex.
User Count = 1
----------------------------------------------------------------------
----------
Creating User Rob.
User Count = 2
----------------------------------------------------------------------
----------
Creating User Jake.
User Count = 3
如果一些操作只希望被执行一次。这时候就可以考虑使用静态构造函数。当然如果设计的面向对象一些的话,那就是使用单件模式了。
静态构造函数可以在第一次调用静态类的任何方法、属性时自动调用,所以在静态构造函数里抛出的异常捕获比较麻烦。
静态构造函数自动被调用,不能被显式调用。虽然提供了许多约束条件,但是静态构造函数执行的确切时间和顺序是不确定的:
一个类的静态构造函数在这个类的任何实例被创建前执行。
一个类的静态构造函数在类的任何静态成员被引用前执行。
一个类的静态构造函数在它的所有派生类的静态构造函数执行之后执行。
一个类的静态构造函数从不会被执行一次以上。
分享到:
相关推荐
描述继承中子类与父类构造函数,静态块的执行顺序
本文实例讲述了C#静态构造函数用法。分享给大家供大家参考。具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,...
当我们想初始化一些静态变量的时候,需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用。 现在碰到...
本篇文章主要是对C#中静态构造函数的几点说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类...
主要介绍了浅析C#静态类,静态构造函数,静态变量 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
主要介绍了C#中的私有构造函数和静态构造函数,是C#入门学习中的基础知识,需要的朋友可以参考下
3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private) */ public class Test{ public Test(){ System.out.println("类Test构造方法被执行 6"); } { System.out.println("类...
模拟新闻NStatics 如何将Mockito与构造函数和静态函数一起使用的示例
C# MVC默认的实例化控制器时是调用不带参数的构造函数,但是使用castle注入进行构造注入构造函数带参。
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...
复制构造函数引用this指针静态成员.ppt
C_语言静态变量和静态函数,可以让您对C语言静态变量和静态函数有更清晰的认识
4.私有构造函数:则无法通过该构造函数实例化该对象,可通过调用静态函数来实例化;当仅用作某些静态成员或属性的容器时,可定义私有构造函数来防止被实例化; 一般的构造函数都是实例构造函数,只要创建实例,就...
今天花了一些时间把静态构造函数的用法总结了一下,希望高手们指点。谢谢
Java的静态代码块、非静态代码块、构造函数的简单的java代码