Unity指令碼基礎Day02
1> C#中所有引用型別的基礎是什麼?
(1)引用型別的基類是System.Object
(2)值型別的基類是System.ValueType,也隱式繼承System.Object
2>請簡述ArrayList和List<Int>的主要區別?
(1)ArrayList不帶泛型 資料型別丟失
(2)List<T>帶泛型 資料型別不丟失
(3)ArrayList需要裝箱拆箱 List<T>不需要
3>請簡述GC(垃圾回收)產生的原因,並描述如何避免?
GC為了避免記憶體溢位而產生的回收機制
避免:
(1)減少new產生物件次數
(2)使用公用的物件(靜態成員)
(3)將string換為stringBuilder
4>請描述Interface與抽象類之間的不同
(1)介面不是類,不能例項化,抽象類可以間接例項化
(2)介面是完全抽象,抽象類為部分抽象
(3)介面可以多繼承,抽象類是單繼承
5>反射的實現原理?
可以在載入程式執行時,動態獲取和載入程式集,並且可以獲利到程式集的資訊,反射即在執行期動態獲取類,物件,方法,物件資料等的一種重要手段.
主要使用的類庫:System.Reflection
核心類:
1>Assembly描述了程式集
2>Type描述了類這種型別
3>ConstructorInfo描述了建構函式
4>MethodInfo描述了所有的方法
5>FieldInfo描述了類的欄位
6>PropertyInfo描述類的屬性
通過以上核心類可在執行時動態獲取程式集中的類,並執行類構造產生類物件,動態獲取物件的欄位或屬性值,更可以動態執行類方法和例項方法等
6>.Net與Mono的關係?
(1).Net是一個語言平臺
(2)Mono為.Net提供整合開發環境,整合並實現了.Net的編譯器,CLR和基礎類庫,使得.Net既可以執行在windows也可以運行於linux,Unix,Mac OS等
7>在類的建構函式前加上static會報什麼錯?為什麼?
建構函式格式為public+類名 如果加上static會報錯(靜態建構函式不能有訪問修飾符)
原因:
(1)靜態建構函式不允許訪問修飾符,也不接受任何引數
(2)無論建立多少型別的物件,靜態建構函式只執行一次
(3)執行庫建立類例項或者首次訪問靜態成員之前,執行庫呼叫靜態建構函式
(4)靜態建構函式執行先於任何例項級別的建構函式
(5)顯然也就無法使用 this和base來呼叫建構函式