-> c#是一組型別宣告
1、c#程式和dll的源**是一組一種或多種型別宣告。
2、對於可執行程式,型別宣告中必須有乙個包含main方法的類。
3、命名空間是一種把相關型別宣告分組並命名的方法
-> 型別是一種模板
型別由下面的元素定義:
1、名稱
2、用於儲存資料成員的資料結構
3、一些行為及約束條件
-> 例項化型別
從某個型別模板建立實際的物件,稱為例項化該型別
通過例項化型別而建立的物件被稱為型別的物件或型別的例項。
-> 資料成員和函式成員
函式成員:執行**。函式成員定義型別的行為
-> 預定義型別:
共16種,其中13種簡單型別,3種非簡單型別(string、object、dynamic)
-> 使用者定義型別:
共6種:類、結構、陣列、列舉、委託、介面
型別通過型別宣告建立,型別宣告包含一下資訊:
1、要建立的型別的種類
2、新型別的名稱
3、對型別中每個成員的宣告(名稱和規格)。陣列和委託除外,他們不含有命名成員
-> 棧和堆
程式執行時,它的資料必須儲存在記憶體中。乙個資料項需要多大的記憶體、儲存在什麼地方、以及如何儲存都依賴於該資料項的型別。
-> 棧:
棧是乙個記憶體陣列,是乙個lifo(last-in first-out)的資料結構。
棧儲存幾種型別的資料:
1、某些型別變數的值
2、程式當前的執行環境
3、傳遞給方法的引數
棧的特徵:
1、資料只能從棧的頂端插入和刪除
2、把資料放到棧頂稱為入棧
3、從棧頂刪除資料稱為出棧
-> 堆:
堆是一塊記憶體區域,在堆裡可以分配大塊的記憶體用於儲存某型別的資料物件
堆的特徵:
1、堆裡的記憶體能夠以任意順序存入和移除
2、雖然程式可以在堆裡儲存資料,但並不能顯式地刪除他們。
clr的自動gc在判斷出程式的**將不會再訪問某資料項時,自動清除無主的堆物件。
-> 值型別和引用型別:
資料項的型別定義了儲存資料需要的記憶體大小以及組成該型別的資料成員。
型別還決定了物件在記憶體中的儲存位置 - 棧和堆
-> 儲存引用型別物件的成員:
1、引用型別物件的資料部分始終存放在堆裡
2、值型別物件或引用型別資料的引用部分可以存放在堆裡,也可以存放在棧裡。
如:乙個引用型別的例項,它有乙個值型別成員和乙個引用型別成員。
對於乙個引用型別,其實例的資料部分始終存放在堆裡。既然兩個成員都是物件資料的一部分,那麼它們都會被存放在堆裡。棧中存放的是例項的引用
對於乙個引用型別的任何物件,他所有的資料成員都存放在堆裡,無論他們是值型別還是引用型別。
-> 變數:
變數是乙個名稱,表示程式執行時儲存在記憶體中的資料
共4種變數:
1、本地變數
2、字段
3、引數
4、陣列元素
-> 變數宣告:
-> 變數在使用之前必須宣告。變數宣告定義了變數,並完成兩件事:
1、給變數命名,並為它關聯一種型別
2、讓編譯器為它分配一塊記憶體
-> 1、變數初始化語句 int i = 1;
-> 2、自動初始化
-> 多重變數宣告
-> 使用變數的值
-> 靜態型別和dynamic關鍵字
靜態型別:變數的型別在變異的時候確定並且不能在執行時修改。
可空型別:允許穿件可以標記為有效或無效的值型別,這樣就可以在使用它之前確定值的有效性。普通的值型別稱為非可空型別
-> 用處:
使用資料庫的時候,希望表示變數目前為儲存有效的值。對於引用型別,可以把變數設定為null。但定義值型別的變數時,不管其內容是否有有效的意義,其記憶體都會進行分配
-> 建立可空型別:
可空型別總是基於另外乙個已宣告型別,這個型別稱為頂層型別。
1、可以從值型別建立可空型別
2、不能從引用型別建立可空型別
3、只需宣告可空型別的變數即可
可空型別的使用: int? i = 1;
1、和任何變數一樣,要獲取值,只需要使用其名字,但必須保證變數不是null,若讀取null變數的值將會產生異常。
2、要檢查可空型別是否包含值,只需要和null比較
3、非可空型別可以隱式轉換為可空型別
4、可空型別和非可空型別之間存在顯示轉換關係
-> 為可空型別賦值
可以為可空型別的變數賦3種型別的值:
1、其底層型別的值
2、相同可空型別的值
3、null值
黑馬程式設計師 變數命名
asp.net android ios開發 net培訓 期待與您交流!命名要求 變數名必須以字母開頭 變數名只能由字母 數字和下劃線組成,而不能包含空格 標點符號 運算子等其它符號。變數名不能與c 中的關鍵字名稱相同。變數名不能與c 中的庫函式名稱相同。int i 合法 int no.1 不合法,含...
黑馬程式設計師 型別轉換
一 隱式轉換,從型別a到型別b的轉換可以在所有情況下進行,執行轉換的規則非常簡單,可以讓編譯器執行轉換。參與運算 算數運算和賦值運算 的運算元和結果型別必須一致。當不一致時,如兩種型別相容且目標型別大於原型別時,系統自動完成型別轉換,在自動轉換中是不會丟失精度的。二 顯式轉換,從型別a到型別b的轉換...
黑馬程式設計師 型別轉換
每個函式都可以強制將乙個表示式轉換成某種特定資料型別。自動 隱式 型別轉換不會導致資料丟失。資料型別在資料結構中的定義是乙個值的集合以及定義在這個值集上的一組操作。變數是用來儲存值的所在處 它們有名字和資料型別。變數的資料型別決定了如何將代表這些值的位儲存到計算機的記憶體中。在宣告變數時也可指定它的...