日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2023-09-28 10:09:16 389觀看
導讀1.前言RT:有人問Net里面的.CCtor和Ctor是什么?首先說答案,.CCtor是靜態構造函數,.Ctor是非靜態構造函數。通過例子分析下這兩個特殊的函數,本篇看下。2.概述先上例子:public class ABC{ public ABC(){ } int i=0x10;}pu

1.前言

RT:有人問Net里面的.CCtor和Ctor是什么?首先說答案,.CCtor是靜態構造函數,.Ctor是非靜態構造函數。通過例子分析下這兩個特殊的函數,本篇看下。RUT28資訊網——每日最新資訊28at.com

2.概述

先上例子:RUT28資訊網——每日最新資訊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(){}RUT28資訊網——每日最新資訊28at.com

作用為什么Roslyn編譯器要加上一個這種函數,就是為了循環往上初始化父類。直到Object.Ctor為止,也就是初始化到最基礎的Object類為止才不會初始化,一層層的向上執行。RUT28資訊網——每日最新資訊28at.com

以上面例子為例RUT28資訊網——每日最新資訊28at.com

運行的過程如下:RUT28資訊網——每日最新資訊28at.com

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

也就是說,有多少個父類,它統統初始化。方便以后調用,比如ABC類里面有個變量i,就是此時被初始化的,如果沒有被初始化,如果需要用到就會報錯。這里注意,如果BBC類里面有全局變量,則優先于ABC里面的全局變量i初始化。RUT28資訊網——每日最新資訊28at.com

代碼最后我們看下它的底層代碼BBC bBC = new BBC() Program+BBC..ctorRUT28資訊網——每日最新資訊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(){}RUT28資訊網——每日最新資訊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(){}RUT28資訊網——每日最新資訊28at.com

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

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 從零開發可視化大屏制作平臺

下一篇: 了解Spring中循環依賴流程,絕殺面試官!

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 佛山市| 潼南县| 深州市| 常宁市| 鄂托克旗| 济阳县| 岳普湖县| 忻州市| 平利县| 阳东县| 秭归县| 桂林市| 基隆市| 即墨市| 仙桃市| 望谟县| 马边| 泰安市| 新化县| 延川县| 普洱| 西乌| 阿拉尔市| 腾冲县| 汉阴县| 西充县| 仙桃市| 胶州市| 大庆市| 涿鹿县| 铁岭县| 横山县| 花垣县| 阿勒泰市| 武功县| 舟山市| 壶关县| 涪陵区| 牡丹江市| 信宜市| 延安市|