为什么在嵌套类上调用方法时不调用父类的静态构造函数?

2024-05-08

给出以下代码,为什么在“Main”的第一行之后没有调用“Outer”的静态构造函数?

namespace StaticTester
{
    class Program
    {
        static void Main( string[] args )
        {
            Outer.Inner.Go();
            Console.WriteLine();

            Outer.Go();

            Console.ReadLine();
        }
    }

    public static partial class Outer
    {
        static Outer()
        {
            Console.Write( "In Outer's static constructor\n" );
        }

        public static void Go()
        {
            Console.Write( "Outer Go\n" );
        }

        public static class Inner
        {
            static Inner()
            {
                Console.Write( "In Inner's static constructor\n" );
            }

            public static void Go()
            {
                Console.Write( "Inner Go\n" );
            }
        }
    }
}

规范第 10.12 节回答了您的问题,其中规定:

静态构造函数的执行 由第一个触发 以下事件发生在 应用领域:

• 一个实例 类类型已创建。

• 任何 类类型的静态成员 被引用。

由于你没有做这两件事,所以 ctor 没有被处决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在嵌套类上调用方法时不调用父类的静态构造函数? 的相关文章

随机推荐