首页 > 代码库 > 类型构造器与实例构造器

类型构造器与实例构造器

比较实例构造器和类型构造器的区别,类型构造器必须是static,并且不允许定义访问修饰符,类型构造器只能被执行一次。:

 class mybaseclass    {         public mybaseclass()        {            Console.WriteLine("基类实例构造器");        }        static mybaseclass()//类型构造器不允许出现访问修饰符        {            Console.WriteLine("基类类型构造器");        }        public void test()//这里如果是private/protected,派生类就无法访问        {            Console.WriteLine("测试动作");        }    }    class testClass:mybaseclass    {        public testClass()        {            Console.WriteLine("派生类实例构造器");        }        static  testClass()        {            Console.WriteLine("派生类的类型构造器");        }    }

如果执行以下代码,请猜测输出结果:

class Program    {        static void Main(string[] args)        {                       testClass mytestclass = new testClass();            mytestclass.test();            testClass mytestClass2 = new testClass();            mytestClass2.test();                  }            }

输出结果如下:

当执行mytestclass时,输出如下顺序:

派生类的类型构造器基类的类型构造器基类的实例构造器派生类的实例构造器测试动作

当执行mytestclass2时,输出如下顺序:

基类的实例构造器派生类的实例构造器测试动作

 

从上面的结果可以看出,类型构造器先与实例构造器执行,类型构造器只执行一次。