Home
R
Cancel

[C# 筆記] 内存垃圾回收機制(二)

GC 觸發邏輯 分代算法 ## https://www.bilibili.com/video/BV15j411U7V9

[C# 筆記] 内存垃圾回收機制(一)

垃圾回收 內存管理(Memory Management) 內存管理指的是用戶為變量在heap(堆積/堆)上分配內存後,誰來管理釋放的問題 內存釋放 程式員手動管理(C,C++) 語言運行時自動管理(C#, Java, Python, JS) 當我們new一個對象的時候,會在heap內存上畫出了這麼一塊內存空間,然後在這裡面放上去當前這個class所需要的成員變量,然...

[C# 筆記] 運算符重載(Operator Overloading) 2

隱式轉換 & 顯示轉換(強制轉換) 隱式轉換 隱式類型轉換:將取值範圍外小的值,裝到一個取值範圍較大的變量裡面,叫做隱式。 例如,int的值裝到float裡:float a = 5;、float的變量裝到double裡:double b = 1.25f;。 float a = 5; //int的值裝到float變量裡 double b = 1.25f; //float的...

[C# 筆記] 運算符重載(Operator Overloading) 1

運算符重載(Operater Overload) 需求 如有下Box的類型,我們希望使用+來讓兩個Box做相加,結果返回一個新的Box,長寬厚是二者的加和。 class Box { public int width = 0; public int height = 0; public int depth = 0; } Box box1 = new Box(); B...

[C# 筆記] 事件參數泛型與練習

前情提要 - 事件(Event關鍵字) 事件(Event關鍵字) 事件(Event關鍵字) event修飾了一個委託,其實是給這個委託升級了,給他加了兩個規則: Event(事件) event修飾的委託,只能在類內調用執行,類外不可調用的。(只能被類內調用執行) event修飾的委託,不能直接賦值,只能通過+、-增減其中蘊含的方法。(只能通過+=、-+方式去加減所蘊含的方法)...

[C# 筆記] 事件Event概念

事件(Event) 事件是C#饋贈我們的禮物,是將委託的多播功能進行封裝後的工具類型。 這句話怎麼理解呢?其實事件本質上是一種多播的委託, 什麼是事件? 一個對象在完成某個工作後,或者發生了某種操作後,需要通知其他對象,從而做出反應;發送出去的通知就是事件。 案例1:火箭發射-火箭飛了 比如說:火箭發射,這裡有一個Push按鈕、有一個火箭 當你按下這個按鈕...

[C# 筆記] 多播委託 Multicast-Delegate

委託的形象化表述 按鈕 -> 我被點擊後會調用一個委託方法,類型是 OnClickDelegate: public delegate void OnClickDelegate(); ↓ 真正被調用的委託方法的名字是 OnClick: public OnClickDelegate OnClick; 如果你需要知道我被點擊了,就把方法委託給我OnClick吧 ...

[C# 筆記] 委託 Delegate

委託 Delegate 委託:是一種「引用類型」變量,用於儲存某個方法的「引用地址」。 定義格式: public delegate 返回值類型 委託類型名字(參數類型1 參數名字,參數類型2 參數名字, ...) 只關心輸入、輸出,所以輸入、輸出就決定了一個方法的簽名 案例 //聲明了一種數據類型(委託類型)叫做Calculate,代表的是某一類方法 public d...

[C# 筆記] 泛型約束

思考 如果想要實現下面泛型類別的程式碼,該怎麼做呢? class AGenericClass<T> { public void Say(T t) { t.Hello(); } } t.Hello()意味著我傳進來的一定是一個class,而這個class一定要有Hello()這個方法。 那麼,該用什麼要規範?用interface,讓它實現IH...

[C# 筆記] 泛型

泛型 概念:使用佔位符T來代表某種類型,編譯期間決定其具體類型 格式: class MyGeneric<T> 使用: MyGeneric<int> mg = new MyGeneric<int>(); 原理:編譯器在編譯的時候,會使用特化的類型替代掉類型佔位符,生成具體的class程式碼...