c#學習筆記--陣列、列舉、結構、值型別和引用型別
一、陣列
System.Array基類
多維陣列:矩形陣列(表示方法不同於C語言),交錯陣列(C語言不具備)
二、列舉型別
.net型別系統包括:類、介面、列舉、結構和委託。
System.Enum類型別
三、結構型別
關鍵字struct,“輕量級的類型別”,支援封裝,但不能繼承。
可以用new來建立結構變數,但也可以不用new
四、值型別和引用各型別
System.ValueType System.object
1.賦值操作
結構型別是值型別,它的賦值操作會在棧中建立一個新的副本;
而對於引用型別,則只是在記憶體中重定向引用變數的引用,也就是在棧中建立了堆中實際物件的引用的副本;
包含引用型別的值型別,淺複製,也就是對於值型別中包含的引用型別的賦值,仍然只是複製了引用而已,若要實現深複製,需要實現IClonable介面。
2.引用型別的傳遞
分為預設的傳遞方式(值傳遞)和引用傳遞(ref或out關鍵字)
按值傳遞引用型別--被呼叫者可以改變物件的狀態資料的值,但不能改變所引用的物件,也就是不能使其改變成為指向另一個物件的引用。
按引用傳遞的引用型別--既可以改變狀態物件資料的值,又可以重新new一個物件並指向它,也就是可以改變所引用的物件。
值型別必須派生自System.ValueType;分配在棧上;
引用型別則派生自除了System.ValueType以外的任意型別;分配在託管堆上。
3.可空型別
?操作符和??操作符……