文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#中静态构造函数的一些理解

C#中静态构造函数的一些理解

时间:2011-03-17  来源:凌风有约

首先,先看一张结论表

If(有类显式静态构造函数)
{
If(有访问静态成员)
{
在进入Main函数之后,第一次访问静态成员之前,先调用静态构造函数,以后将不再调用静态构造函数,同一个静态构造函数最多只能调用一次。
}
Else
{
不调用该类静态构造函数
}
}
Else
{
If(有访问静态成员)
{
在执行Main函数中的代码之前,先调用静态构造函数,以后将不再调用静态构造函数,同一个静态构造函数最多只能调用一次。
}
Else
{
不调用该类静态构造函数
}
}

1.下面先来验证一下上面的结论

public class Class_1
    {
        public static int i;
        static Class_1()   //显式定义静态构造函数
        {
            Console.WriteLine("Class_1:显示定义了静态构造函数");
            i = 1;
        }
    }

    public class Class_2
    {
        public static int i = Init(2);  //没有显式定义静态构造函数
        public static int Init(int j)
        {
            Console.WriteLine("Class_2:没有显示定义了静态构造函数");
            return j;
        }
    }

    public class MainClass
    {
        static void Main()
        {
            //分别分析以下几种情况的结果
        }
   }
1. 显示定义了静态构造函数,且有访问静态成员

static void Main()
{
///1.显示定义静态构造函数 2.有访问Class_1中的静态成员i
Console.WriteLine("Start In Main:");
Console.WriteLine(Class_1.i);
}

结果如下:

Start In Main:
Class_1:显示定义了静态构造函数
1
2. 显示定义了静态构造函数,且没有访问静态成员
static void Main()
{
///1.显示定义静态构造函数 2.没有访问Class_1中的静态成员i
Console.WriteLine("Start In Main:");
}

结果如下:
Start In Main:
3. 没有显示定义了静态构造函数,且有访问静态成员
static void Main()
{
///1.没有显示定义静态构造函数 2.有访问Class_2中的静态成员i
Console.WriteLine("Start In Main:");
Console.WriteLine(Class_2.i);
}
结果如下:
Class_2:没有显示定义了静态构造函数
Start In Main:
2
4.没有显示定义静态构造函数,且没有访问静态成员
static void Main()
{
///1.没有显示定义静态构造函数 2.没有访问Class_2中的静态成员
Console.WriteLine("Start In Main:");
}
结果如下:
Start In Main:

  

排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载