首页 > 代码库 > 子类如果不实例化则不会调用它自身的静态构造函数
子类如果不实例化则不会调用它自身的静态构造函数
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication6{ class Program { static void Main(string[] args) { #region 如果注释掉, 则Stat2.Instance为null 报错 Stat1.DoSth(); Stat2 st2 = new Stat2(); #endregion Stat2.DoSth(); Console.ReadKey(); } } class Stat1 { public static Stat1 Instance; //static Stat1() //{ // Console.WriteLine("Stat1 Static Structor"); //} public static void DoSth() { Instance.Do(); } static Stat1() { Console.WriteLine("Stat1 Static Costructor"); Instance = new Stat1(); } public virtual void Do() { Console.WriteLine("Stat1 Do"); } } class Stat2 : Stat1 { static Stat2() { Console.WriteLine("Stat2 Static Costructor"); Instance = new Stat2(); } public override void Do() { Console.WriteLine("Stat2 Do"); } }}
Stat1这个基类如果不实例化,直接使用它的静态方法,是先调用了它静态构造函数的。
但是Stat2这个子类如果不实例化,则既不会调用Stat1基类的构造函数,也不会调用Stat2它自己的静态构造函数。
这是不是很奇怪?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。