string 字串的特性 字串的不可變 當你給字串賦值的時候,舊的資料並不會銷毀,而是在Heap堆積重新開辟一塊空間儲存新值。 當程式結束後,GC掃描整個內存,如果發現有的空間沒有被指向,則立即把它銷銷。 可以把string類型 看做是唯讀的char[] ToCharArray() 將字串轉換為char[] ...
[C# 筆記] string 不可變的特性
string 字串不可變的特性 當你給字串賦值的時候,舊的資料並不會銷毀,而是在Heap(堆積)重新開辟一塊空間儲存新值,同時也產生很多內存垃圾。(所以,字串一旦聲明了就不再可以改變。) 當程式結束後,GC掃描整個內存,如果發現有的空間沒有被指向,則立即把它銷銷。 int & string int是 ValueType(值類型),string是 Reference...
[C# 筆記] Stack (堆疊/棧) & Heap (堆積/堆)
記憶體配置 Stack(堆疊)和 Heap(堆積) 是存放資料的記憶體分成兩種不同的管理機制。 簡單來說, 從記憶體配置的角度, 用一個二分法 Stack 堆疊:用於「靜態」記憶體配置, 大陸翻譯為棧 Heap 堆積:用於「動態」記憶體配置, 大陸翻譯為堆 儲存 ValueType(值類型)是擺在Stack(堆疊/棧)中 ReferenceType(參考類型)是擺在...
[C# 筆記] namespace 命名空間
namespace 命名空間 用於解決類別重名問題,可以看做「類別的文件夾」 A—> ProjectA —> 顧客類別 B—> ProjectB —> 顧客類別 C—> ProjectC —> 顧客類別 如果當前項目中沒有這個類的命名空間,需要我們手動的導入這個類所在的命名空間using 在一個專案中,引用另一個專案 方案總管 > [相依性] ...
[C# 筆記] Value type, Reference type
值類型和引用類型 區別: 值類型和引用類型在內存上儲存的地方不一樣。 在傳遞值類型和傳遞引用類型的時候,傳遞的方式不一樣。 值類型我們稱之為值傳遞,引用類型我們稱之為引用傳遞 值類型 Value Type int, double, bool, char, decimal, struct, enum 引用類型 Reference Type string, 自定義類, 陣列 ...
[C# 筆記] class property method field review
字段、屬性、方法、構造函式 字段:儲存數據 屬性:保護字段,對字段的取值和設值進行設定 方法:描述對象的行為 構造函數:初始化對象(給對象的每個屬性依次的賦值) 類別中的成員,如果不加訪問修飾符,默認都是private field 字段=欄位 對象=物件 用new創建對象 new 做了三件事 在內存中開辟一塊空間 在開辟的空間中創建對象 調...
[C# 筆記] class property method 練習
寫一個ticket類,有一個距離屬性(該屬性唯讀,在構造方法中賦值),不能為負數,有一個價格屬性,價格屬性唯讀,並且根據距離distance 計算價格Price (1元/公里): 0-100公里 票價不打折 101-200公里 總額打9.5折 201-100公里 總額打9折 300 公里以上 總額打8折 Ticket ticket = new Ticket(150);...
[C# 筆記] : this 關鍵字
this關鍵字 代表當前類別的對象 在類別當中顯示的調用本類別的構造函數:this :thiscall本身類別的其他的構造函式 public class Student { //構造函式 public Student(string name, int age, char gender, int english, int math) { t...
[C# 筆記] destructor 解構函式
解構函式 作用:幫助我們釋放資源 ~Student() { .... } 如果你希望程式結束後,能馬上釋放資源就可以用解構函式 classes-and-structs/finalizers
[C# 筆記] Constructor 構造函式
構造函式 作用:幫助我們初始化物件(給物件的每個屬性依次賦值) 構造函式是一個特殊的方法: 構造函式沒有返回值,連void也不能寫。 構造函式的名稱,必須跟類別名一樣。 創建物件的時候,會調用構造函式 構造函數是可以有重載的。 類別當中會有一個默認的無參釋的構造函數,當你寫一個新的構造函數後,不管是有參數的、還是無參數的,那個默認的無參數構造函數就會被取代掉。 ...