当前位置:首页 > 科技  > 软件

C#.Net里面的.CCtor和Ctor是什么呢?

来源: 责编: 时间:2023-09-28 10:09:16 484观看
导读1.前言RT:有人问Net里面的.CCtor和Ctor是什么?首先说答案,.CCtor是静态构造函数,.Ctor是非静态构造函数。通过例子分析下这两个特殊的函数,本篇看下。2.概述先上例子:public class ABC{ public ABC(){ } int i=0x10;}pu

1.前言

RT:有人问Net里面的.CCtor和Ctor是什么?首先说答案,.CCtor是静态构造函数,.Ctor是非静态构造函数。通过例子分析下这两个特殊的函数,本篇看下。G7N28资讯网——每日最新资讯28at.com

2.概述

先上例子:G7N28资讯网——每日最新资讯28at.com

public class ABC{  public ABC(){  }  int i=0x10;}public class BBC:ABC{  public BBC(){  }  int i = 0x20;} static void Main(string[] args) {     BBC bBC = new BBC(); }

简单点来说,类BBC的非静态构造函数就是BBC.Ctor,也就是构造函数BBC(){}.同理ABC的非静态构造函数ABC.Ctor也就是ABC(){}G7N28资讯网——每日最新资讯28at.com

作用为什么Roslyn编译器要加上一个这种函数,就是为了循环往上初始化父类。直到Object.Ctor为止,也就是初始化到最基础的Object类为止才不会初始化,一层层的向上执行。G7N28资讯网——每日最新资讯28at.com

以上面例子为例G7N28资讯网——每日最新资讯28at.com

运行的过程如下:G7N28资讯网——每日最新资讯28at.com

1.new BBC()2.BBC.Ctor3.ABC.Ctor4.Object.Ctor

也就是说,有多少个父类,它统统初始化。方便以后调用,比如ABC类里面有个变量i,就是此时被初始化的,如果没有被初始化,如果需要用到就会报错。这里注意,如果BBC类里面有全局变量,则优先于ABC里面的全局变量i初始化。G7N28资讯网——每日最新资讯28at.com

代码最后我们看下它的底层代码BBC bBC = new BBC() Program+BBC..ctorG7N28资讯网——每日最新资讯28at.com

00007FF862D006D7 48 B9 50 21 DF 62 F8 7F 00 00 mov         rcx,7FF862DF2150h  00007FF862D006E1 E8 7A 02 B0 5F       call        CORINFO_HELP_NEWSFAST (07FF8C2800960h)  00007FF862D006E6 48 89 45 20          mov         qword ptr [rbp+20h],rax  00007FF862D006EA 48 8B 4D 20          mov         rcx,qword ptr [rbp+20h]  00007FF862D006EE E8 05 E7 0D 00       call        Test_.Program+BBC..ctor() (07FF862DDEDF8h)

int i=0x10 public ABC(){}G7N28资讯网——每日最新资讯28at.com

00007FF862D015C7 E8 44 64 C2 5F       call        00007FF8C2927A10  00007FF862D015CC 48 8B 4D 40          mov         rcx,qword ptr [rbp+40h]  00007FF862D015D0 C7 41 08 10 00 00 00 mov         dword ptr [rcx+8],10h  00007FF862D015D7 48 8B 4D 40          mov         rcx,qword ptr [rbp+40h]  00007FF862D015DB FF 15 4F FA F6 FF    call        qword ptr [CLRStub[MethodDescPrestub]@00007FF862C71030 (07FF862C71030h)] 00007FF862D015E1 90                   nop  00007FF862D015E2 90                   nop  00007FF862D015E3 FF 15 2F 63 12 00    call        qword ptr [CLRStub[MethodDescPrestub]@00007FF862E27918 (07FF862E27918h)]

public BBC(){}G7N28资讯网——每日最新资讯28at.com

00007FF862D0157B E8 60 D8 0D 00       call        Test_.Program+ABC..ctor() (07FF862DDEDE0h)  00007FF862D01580 90                   nop  00007FF862D01581 90                   nop

本文链接:http://www.28at.com/showinfo-26-11890-0.htmlC#.Net里面的.CCtor和Ctor是什么呢?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 从零开发可视化大屏制作平台

下一篇: 了解Spring中循环依赖流程,绝杀面试官!

标签:
  • 热门焦点
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 6月iOS设备好评榜:第一蝉联榜首近一年

    作为安兔兔各种榜单里变化最小的那个,2023年6月的iOS好评榜和上个月相比没有任何排名上的变化,仅仅是部分设备好评率的下降,长年累月的用户评价和逐渐退出市场的老款机器让这
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 造车两年股价跌六成,小米的估值逻辑变了吗?

    如果从小米官宣造车后的首个交易日起持有小米集团的股票,那么截至2023年上半年最后一个交易日,投资者将浮亏59.16%,同区间的恒生科技指数跌幅为52.78%
Top