小编Sum*_*war的帖子

为什么在第一次调用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");
        }
    }
}     
Run Code Online (Sandbox Code Playgroud)

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

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

.net c#

8
推荐指数
1
解决办法
1138
查看次数

标签 统计

.net ×1

c# ×1