C#高階程式設計第三章讀書筆記
一,結構
1.結構struct是儲存線上程棧中,類是儲存在託管堆中,成員變數少的時候可以考慮使用結構
2.結構的成員變數不允許直接賦值,結構的建構函式不允許不帶參,實際上結構有一個預設的不帶參的建構函式,會把成員變數賦值,值型別為0,引用型別為null
3.結構和int一樣,不用new就可以建立物件,但是結構在讀取值之前必須要使用初始化,哪怕是呼叫不帶參的建構函式
4.結構不能繼承或被繼承,結構派生自System.ValueType,System.ValueType派生自System.Obiect,所以結果可使用Object下的方法
二,弱引用
1.弱引用允許建立和使用物件,但是垃圾回收器會回收掉他的記憶體
2.弱引用是使用WeakReference類建立的,Weakreference test=new WeakReference(new MyClass());,在使用這個類時必須判斷它是否存在if(test.Isalive){},返回的是Object物件,因此必須進行型別的強制轉換。
3.呼叫垃圾回收器
GC.Collect()
4.部分類
partial允許將類、結構、介面、方法放在不同的檔案中,類的其他修飾符作用在一個類上就是全域性的
5.靜態類不能夠被例項化
6. Object中Finalize()方法的使用,此方法在引用物件被作為垃圾回收時呼叫,如果物件有非託管資源的引用,就需要在這個方法下刪除引用
7.擴充套件方法:允許改變一個類但是不需要類的原始碼,可以增加一個方法,呼叫時使用類B的例項即可呼叫
/// <summary>
/// 在A底下增加了屬於B類的方法
/// </summary>
public static class A
{
public static void TestB(this B b, int x)
{
System.Diagnostics.Debug.WriteLine(b.ToString() + x);
}
}