当前位置: 首页 > 编程语言 > C#

静态构造函数是在实例构造函数之后调用的吗?分享

时间:2023-04-10 15:57:51 C#

在实例构造函数之后调用的静态构造函数?亲爱的,之前有人问过这个问题,但答案并没有解释我所看到的问题。问题:C#编程指南说:静态构造函数用于初始化任何静态数据,或执行只需要执行一次的特定操作。在创建第一个实例或引用任何静态成员之前自动调用它。特别是,在创建类的任何实例之前调用静态构造函数。(这并不能确保静态构造函数在创建实例之前完成,但那是另一回事。)让我们看一下示例代码:usingSystem;公共类测试{staticpublicTesttest=newTest();静态测试(){Console.WriteLine("静态测试()");}publicTest(){Console.WriteLine("newTest()");}}publicclassProgram{publicstaticvoidMain(){Console.WriteLine("Main()开始了");Console.WriteLine("测试.test="+测试.test);Console.WriteLine("Main()完成");它输出:Main()startednewtest()statictest()Test.test=testMain()completed所以我们可以看到实例构造函数在静态构造函数开始之前完成(从而创建了一个实例)。这不符合指南吗?也许静态字段的初始化被认为是静态构造函数的隐式部分?静态字段的内联初始化程序在显式静态构造函数之前运行。编译器将您的类转换为以下内容:publicclassTest{.cctor{//ClassconstructorTest.test=newTest();//内联字段初始化器Console.WriteLine("staticTest()");//Explicitstaticctor}.ctor{...}//Instanceconstructor}请注意,这与声明顺序无关。引用规范:类的静态字段变量初始值设定项对应于按照它们在类声明中出现的文本顺序执行的一系列赋值。如果类中存在静态构造函数(第10.11节),则在执行该静态构造函数之前立即执行静态字段初始值设定项。以上就是C#学习教程:在实例构造函数之后调用静态构造函数?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: