今天去面试的时候被一道题问得一点脾气都没有,今天特地来研究下。
子类成员变量,子类静态成员变量,子类构造函数,父类成员变量,父类静态成员变量,父类构造函数的执行顺序。
现在贴上从另外一个.net程序员写的实例,稍微改下。
public class ShowInfo { public ShowInfo(string info) { Console.WriteLine(info); } } class father { public static ShowInfo StaticFatherMember = new ShowInfo("父类静态成员变量执行"); //父类静态成员变量 public ShowInfo InstanceFatherMember = new ShowInfo("父类实例成员变量执行"); //父类实例成员变量 static father() //父类构造函数 { ShowInfo StaticFatherMethod = new ShowInfo("父类静态构造函数执行"); //父类静态构造函数 } public father() { ShowInfo bcsI = new ShowInfo("父类实例构造函数执行"); } } class son : father { public static ShowInfo StaticSonMember = new ShowInfo("子类静态成员变量执行"); public ShowInfo InstanceStaticSonMember = new ShowInfo("子类实例成员变量执行"); static son() { ShowInfo StaticSonMethod = new ShowInfo("子类静态构造函数执行"); } public son() { ShowInfo InstanceSonMethod = new ShowInfo("子类实例构造函数执行"); } } class Program { static void Main(string[] args) { //各个对象的初始化顺序如下: //①子类静态成员变量 //②子类静态构造函数 //③子类实例成员变量 //④父类静态成员变量 //⑤父类静态构造函数 //⑥父类实例成员变量 //⑦父类构造函数 //⑧子类构造函数 son s = new son(); Console.ReadKey(); } }
来看看最后的输出结果:
1子类静态成员变量 2子类静态构造函数 3子类实例成员变量 4父类静态成员变量 5父类静态构造函数 6父类实例成员变量 7父类构造函数 8子类构造函数
看来除了构造函数,子类全部比父类先执行,其顺序是静态先于实例,变量先于函数。然后子父类实例函数都是最后执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现