天天看點

02-C#(基礎)基本的定義和說明

C#程式或DLL的源碼是一組類型的聲明

類:類型是一種模闆,可以把類型想象成一個用來建立資料結構的模闆。模闆本身并不是資料結構,但它詳細說明了該模闆構造的對象的特征。

命名空間:它是一種把相關的類型聲明分組并命名的方法。既然程式是一組相關的類型聲明,那麼通常會把程式聲明在建立的命名空間内。

對于可執行程式,類型聲明中必須有一個包含Main方法。

下面是.Net中預定義的類型:

02-C#(基礎)基本的定義和說明
02-C#(基礎)基本的定義和說明

堆和棧

對于.Net平台來說記憶體中使用堆棧的概念來存放資料。

棧是一個記憶體數組,是一個LIFO(last-in First-out 後進先出)的資料結構。

棧中存儲的資料類型:值類型資料,引用類型的位址, 程式目前的執行環境,傳遞給方法的參數。

棧的特征:資料隻能從棧的頂端插入和删除,把資料放到棧頂稱為入棧(Push),從棧頂删除資料稱為出棧(POP),是以可以把棧想像成一個水杯。

棧桢

當一個方法被調用時,在棧頂配置設定了一塊記憶體用于儲存一定資料與方法相關的資料項,這塊記憶體叫方法的棧桢。

棧桢中存放的資料有:傳回位址(就是方法退出時在哪裡繼續執行)、配置設定記憶體的參數(就是方法的值參數)、方法調用相關的其他各種管理資料項。

當方法被調用時,它的整個棧桢被壓入棧中,方法退出時,它的整個棧桢從棧中彈出。彈出一個棧桢有時也稱為釋放棧。

與棧不同,堆是一塊記憶體區域,在堆裡可以配置設定大塊的記憶體用于存儲某類型的資料,堆裡的記憶體可以任意順序存入和移除。但不能的删除它們。

CLR的自動GC(Garbage Collector,垃圾收集器)在判斷出程式的代碼将不會再通路某資料項時(該引用類型沒有任何引用時),自動清除無主的堆對象。

堆中一般存放的是引用類型的實際資料而棧存放的是值類型。

值類型:隻需要一段單獨的記憶體,用于存儲實際的資料。(因棧是一個記憶體資料,存放一些占用空間比較小的資料)

引用類型:它需要兩段記憶體,1存儲實際的資料,它總是位于堆中,2是一個引用,指向資料在堆中的存放位置。

02-C#(基礎)基本的定義和說明

對于一個引用類型,其執行個體的資料部分始終存放在堆裡。

對于一個值類型對象,或引用類型資料的引用部分可以存放在堆裡,也可以存放在棧裡,這依賴于實際環境。

02-C#(基礎)基本的定義和說明

類:以程式的角度來說程式的資料和功能組織為邏輯上相關的資料項和函數的封裝集合,稱之為類。

類:以現實的角度來說對某些事物共同性的抽象的描述。

類是一個能存儲資料并執行代碼的資料結構,類的每個執行個體都是不同的實體。

變量:當聲明定義變量,其内部完成了兩件事:1.給變量命名,并為它關聯一種類型。2讓編譯器為它配置設定一塊記憶體。

常量:(Const)通常是一個預定義簡單類型或期組成的表達式。它還可以是Null引用,但它不能是某對象的引用,因為對象的引用是在運作時決定的。常量中是不能重新指派的。

參數:

形參:是聲明在方法的參數清單中而不是方法體中的本地變量。

實參:當代碼調用一個方法時,形參的值必須在方法的代碼開始執行之前初,初始化。

值參數:(傳值)資料通過複制實參的值到形參的方式傳遞到方法。

引用參數:(傳位址)使用Ref修飾符,實參必須是變量,在用作實參前必須被指派。

輸出參數: 使用out修飾符,用于方法體内把資料傳出到調用代碼,它們非常類似引用參數。每個輸出參數在方法讀取、傳回之前必須被指派,這就意味着參數的初始值是無關的。

參數數組:允許零個或多個實參對應一個特殊的形參,在一個參數清單中隻能有一個參數數組,并且它必須是清單中最後一個。使用(Params)修飾符。

如果數組參數是值類型,那麼值被複制,實參不受方法内部的影響。

如果數組參數是引用類型,那麼引用被複制,實參引用的對象受到方法内部的影響。

每一天都是嶄新的,我們的目标有多遠,我們就能走多遠,堅持!!

繼續閱讀