思考一下下面三段这段程序的输出结果:

静态构造函数的执行时机using System;
静态构造函数的执行时机
public class Type1
}


1. 程序中有访问静态成员:

静态构造函数的执行时机static void Main()
}


2. 程序中没有访问静态成员,但有访问静态成员所声明的类中的实例成员:

静态构造函数的执行时机static void Main()
}


3.既不访问静态成员,也不访问实例成员

静态构造函数的执行时机static void Main()
}


    情况1下,输出编译和运行结果如下:

静态构造函数的执行时机E:CSC>csc staticfield.cs
静态构造函数的执行时机Microsoft (R) Visual C# 
2005 编译器 版本 8.00.50727.42
静态构造函数的执行时机用于 Microsoft (R) Windows (R) 
2005 Framework 版本 2.0.50727
静态构造函数的执行时机版权所有 (C) Microsoft Corporation 
2001-2005。保留所有权利。
静态构造函数的执行时机
静态构造函数的执行时机E:CSC
>staticfield.exe
静态构造函数的执行时机Implicit: In Type2 Class Constructor
静态构造函数的执行时机In Main Function
静态构造函数的执行时机Explicit: In Type1 Class Constructor
静态构造函数的执行时机
1
静态构造函数的执行时机
2

 

    情况2下,输出结果:

静态构造函数的执行时机E:CSC>staticfield.exe
静态构造函数的执行时机Implicit: In Type2 Class Constructor
静态构造函数的执行时机In Main Function
静态构造函数的执行时机Explicit: In Type1 Class Constructor

 


    情况3下,输出结果:

静态构造函数的执行时机E:CSC>staticfield.exe
静态构造函数的执行时机In Main Function

 

     是否跟我们想象中的结果不一样呢?^_^
    根据上面三个测试,我们可以得到如下结论(针对类中有定义静态字段的情况):

静态构造函数的执行时机if(如果为类显式定义静态构造函数,例如上面的Type1)
}

     


相关文章:

  • 2021-12-18
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-30
  • 2021-06-13
  • 2021-06-17
猜你喜欢
  • 2021-12-08
  • 2022-01-13
  • 2022-12-23
  • 2022-03-09
  • 2022-12-23
相关资源
相似解决方案