Csharp/C#教程:为什么在第一次调用class方法之前没有调用静态构造函数分享


为什么在第一次调用class方法之前没有调用静态构造函数

根据Jon Skeet的artice C#和beforefieldinit和在When中的讨论是一个在C#中调用的静态构造函数? 必须在首次调用类的方法之前调用静态构造函数。

由于某些原因,以下代码不会出现此行为:

namespace AbstractAndStatic { class Program { static void Main(string[] args) { StaticClass.Equals(1,2); StaticClass.foo(); } } static class StaticClass : Object { public static void foo() { Console.WriteLine("Static"); } static StaticClass() { Console.WriteLine("static constructor"); } } class TestClass { public void deb() { Console.WriteLine("Test Class Debug"); } } } 

我正在使用Visual Studio调试器调试上面的代码。 当语句StaticClass.Equals(1,2); 在Main方法中执行静态构造函数未被调用但是当StaticClass.foo(); 执行它调用静态构造函数,然后调用foo方法。

我很困惑为什么它在第一次执行StaticClass.Equals(1,2);时没有被调用StaticClass.Equals(1,2);

您对StaticClass.Equals的调用实际上只是对Object.Equals(Object, Object)的调用,因为StaticClass不为Equals提供适用的重载。 如果查看IL,您将看到编译器已经解析了对Object.Equals(1, 2)的调用。 如果您没有调用实际涉及静态类的方法,则不需要初始化它。

上述就是C#学习教程:为什么在第一次调用class方法之前没有调用静态构造函数分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1003321.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐