成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
為什么Roslyn編譯器要加上一個這種函數,就是為了循環往上初始化父類。直到Object.Ctor為止,也就是初始化到最基礎的Object類為止才不會初始化,一層層的向上執行。

1.前言

RT:有人問Net里面的.CCtor和Ctor是什么?首先說答案,.CCtor是靜態構造函數,.Ctor是非靜態構造函數。通過例子分析下這兩個特殊的函數,本篇看下。

2.概述

先上例子:

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(){}

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

以上面例子為例

運行的過程如下:

1.new BBC()
2.BBC.Ctor
3.ABC.Ctor
4.Object.Ctor

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

代碼最后我們看下它的底層代碼BBC bBC = new BBC() Program+BBC..ctor

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(){}

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(){}

00007FF862D0157B E8 60 D8 0D 00       call        Test_.Program+ABC..ctor() (07FF862DDEDE0h)  
00007FF862D01580 90                   nop  
00007FF862D01581 90                   nop
責任編輯:武曉燕 來源: 江湖評談
相關推薦

2009-08-25 13:53:20

C#.NET rege

2009-08-26 14:23:14

C#.Net Fram

2011-06-17 15:55:19

ArrayListC#

2009-08-13 10:35:55

C#.NET操作XML

2009-08-24 16:19:54

C#.NET綁定Off

2009-08-26 10:09:22

C#編碼規范

2021-02-02 09:37:20

CQRS系統數據庫

2009-09-11 11:30:53

Net60C#.NET

2009-08-24 16:30:43

C#.NET綁定Off

2009-08-19 15:44:09

ObjectARX .

2021-02-02 18:02:09

java對象數據

2021-02-08 21:07:47

JavaCAS機制

2009-08-19 16:05:46

AutoCADEditor類

2009-08-28 09:29:02

2009-04-02 15:21:43

c#IDisposeFinalize

2009-08-31 14:45:15

C#.NET多線程應用

2009-08-28 14:15:19

SocketVisual C#.N

2009-08-19 16:19:33

Employee對象

2011-06-01 15:45:28

實體類序列化

2009-09-01 16:14:05

ArrayList與A
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄色录像毛片 | 久久久久久久久久久蜜桃 | 久久国产精品久久国产精品 | 毛片com | 亚洲一区视频在线播放 | 在线视频一区二区 | 日韩欧美一区二区三区免费观看 | 男人电影天堂 | 亚洲精品一区二区三区四区高清 | 欧美v日韩 | 午夜天堂精品久久久久 | 国产精品久久在线 | 免费骚视频 | 福利片在线观看 | 日韩在线免费 | 影音先锋中文字幕在线观看 | 视频一区在线 | 国产精品日日夜夜 | 久久久久久综合 | 一区二区三区四区五区在线视频 | 国产精品久久国产精品99 | 亚州一区二区三区 | 日韩在线观看网站 | 人人看人人干 | 精品一区二区久久久久久久网站 | 精品一区国产 | 亚洲国产一区二区三区 | 久久精品欧美一区二区三区不卡 | 久久久久久精 | 免费激情av | 国产精品99久久久久久人 | 国产精品视频一二三区 | 国产中文字幕在线观看 | 久久一区二区三区四区 | 国产精品视频在线观看 | 一区二区三区欧美在线观看 | 欧美在线天堂 | 国产在线精品一区二区三区 | 日本一区二区高清不卡 | 夜夜爽99久久国产综合精品女不卡 | 91精品国产综合久久久久久丝袜 |