1. 程式人生 > >Unity指令碼基礎Day02

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來呼叫建構函式