一 C#程式是一組型別宣告
C#程式或DLL的源代碼是一組一種或多種型別宣告,
對于可執行程式,型別宣告中必須有一個包含Main方法的類,
命名空間是一種把相關的型別宣告分組并命名的方法,是類在程式集中邏輯上的分組,
二 Main:程式的起始點
每個C#可執行程式必須帶有Main方法,
每個C#程式的可執行起始點在Main中的第一條指令,
static void Main()
{
陳述句 . . .
}
三 C#型別
3.1 型別是一種模板,是一種活動的資料結構
型別是一個用來創建資料結構的模板,類描述了其代表的該類資料結構的特征,
類是一個能存盤資料并執行代碼的資料結構,包含資料成員和函式成員,
資料成員:存盤與類或類的實體相關的資料,資料成員通常模擬該類所表示的現實事物的特性;
函式成員:它執行代碼,通常會模擬類所表示的顯示事物的功能和操作,

3.2 C#預定義型別
C#提供了16種預定義型別,包括13種簡單型別和13種非簡單型別;
13種簡單型別包括:
- 11種數值型別:不同長度的有符號和無符號整數;浮點數型別float和double,decimal;
- 一種unicode字符型別char;
- 一種布爾型別bool;
3種非簡單型別包括:
- string:一個unicode字符陣列
- object:所有其他型別的基類
- dynamic: 使用動態語言撰寫程式集時使用


3.3 用戶定義型別
- 類 class
- 結構 struct
- 陣列 array
- 列舉 enum
- 委托 delegate
- 介面 interface
3.4 實體化型別,創建物件
從某個型別創建實際的物件,稱為實體化該物件
四 堆疊stack和堆heap
程式運行時,它資料必須存盤在記憶體中,一個資料項需要多大的記憶體,存盤在何處及如何存盤都取決于該資料項的型別,
運行中的程式使用兩個區域來存盤資料:堆疊和堆,
4.1 堆疊stack
堆疊是一個記憶體陣列,是一個(Last-In First-out)后進先出的資料結構,
系統管理所有的堆疊操作,
堆疊存盤幾種型別的資料:
- 某些型別變數的值;
- 程式當前的執行環境;
- 傳遞給方法的引數,
堆疊的特征:
- 資料只能從堆疊的頂端插入或洗掉;
- 把資料放到堆疊頂稱為入堆疊(push);
- 從堆疊頂洗掉資料成為出堆疊(pop);

4.2 堆heap
堆是一塊記憶體區域,在堆里可以分配大塊的記憶體用于存盤某型別的資料物件,
堆里的記憶體可以以任意順序存入和移除,
雖然程式可以在堆里保存資料,但并不能顯示地洗掉他們,CLR的GC(Grabage Collector)在判斷出程式的代碼將不會再訪問某資料項時,自動清除無主的堆物件,
五 值型別和參考型別
型別決定了物件在記憶體中的存盤位置--堆疊或堆,
按照型別的物件在記憶體中存盤方式的不同,類被分為值型別和參考型別:
- 值型別只需要一段單獨的記憶體,用于存盤實際的資料;
- 參考型別需要兩段記憶體,第一段存盤實際的資料,位于堆中,第二段是一個參考,指向資料在堆中的存放位置,

5.1 存盤參考型別物件的成員
參考型別物件的資料部分始終存放在堆里,
值型別物件或參考型別資料的參考部分可以存放在堆里,也可以存放在堆疊里,取決于實際環境,

六 變數
變數是一個名稱,表示程式執行時存盤在記憶體中的資料,
C#提供了4種變數:
- 本地變數:在方法的作用域保存臨時資料,不是型別的成員;
- 欄位:保存和型別或實體相關的資料,是型別的成員;
- 引數:用于從一個方法到另一個方法傳遞資料的臨時變數;
- 陣列元素:同類資料項構成的有序集合的一個成員,可以為本地變數,也可以為型別的成員,
6.1 變數宣告
變數宣告定義了變數,并完成了兩件事:
- 給變數命名,并為它關聯一種型別;
- 讓編譯器為它分配一塊記憶體,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440501.html
標籤:C#
下一篇:C#-3 深入理解類
