一、類
類中的資料和函式稱為類的成員
資料成員是包含類的資料----欄位、常量和事件的成員。資料成員可以是靜態資料、類成員總是例項成員,除非用static進行顯示的宣告。
事件是類的成員,在發生某些行為(如改變類的字段或屬性,或者進行了某種形式的使用者互動操作)時,他可以讓物件通知呼叫方,呼叫方可以包含所謂「事件處理程式」的**來響應該事件。
函式成員提供了操作類中資料的某些功能,包括方法、屬性、建構函式和終結器(finalizer)、運算子以及索引器。
(1)方法是與某個類相關的函式,與資料成員一樣,函式成員預設為例項,使用static修飾符可以把方法定義為靜態方法
(2)屬性是可以從客戶段訪問的函式組,其訪問方式與訪問類的公共字段類似。c#為讀寫類中的屬性提供了專用語法,所以不必使用那些名稱中嵌有get或set的方法。因為屬性的這種語法不同於一般函式的語法,在客戶端**中,虛擬的物件被當作實際的東西
(3)建構函式是在例項化物件時自動呼叫的特殊函式,它們必須與所屬的類同名,且不能有返回型別。建構函式用於初始化欄位的值
(4)終結器類似建構函式,但是在clr檢測到不再需要某個物件時呼叫它,它們的名稱與類相同,但前面有乙個「~」符號,不可能**什麼時候呼叫終結器
(5)運算子執行最簡單的操作就是加法和減法,c#還允許運算子過載
如下是乙個包含靜態建構函式和索引的類的定義和測試
classprogram
catch
(argumentoutofrangeexception e)
console.readkey();}}
public
class
userpreferences
public
string name
static
userpreferences()
string days = ;
//串聯建構函式
public
userpreferences()
public userpreferences(int age) : this(age, ""
)
public userpreferences(string name) : this(0
, name)
public userpreferences(int age, string
name)
public
intthis[string
day]
}//////
定義索引器獲取資料的方法
/// ///
///private
int getday(string
testday)
}throw
new argumentoutofrangeexception(testday, "
testday must be in the form \"sun\", \"mon\", etc");
}}
從中可以得出靜態建構函式的特性:乙個類(結構)只能定義乙個靜態建構函式,靜態建構函式不允許訪問修飾符並且不能接受任何引數,無論建立多少個類例項,靜態函式知執行一次、clr建立類例項或首次呼叫類靜態成員前,clr會呼叫靜態建構函式、靜態建構函式先於例項級別的其他建構函式執行。參考
二,結構
結構是值型別,不是引用型別。它們儲存在棧中或儲存未內聯,其生存期的限制和簡單的資料型別一樣,對於結構:不支援繼承,編譯器總是提供乙個無參的預設建構函式,並且不允許替換,使用結構可以指定字段如何在記憶體中布局,預設的建構函式把數值初始化為0,把引用型別初始化為null,且總是隱式指出的,如下定義的結構:
structdimensions
}
三、弱引用
弱引用允許建立和使用物件,但是gc執行時就會**物件並釋放記憶體,當object比較大時運用弱引用是合理的,如下:
weakreference userreference = new weakreference(new userpreferences(3, "yoyo
"));
userpreferences usermodel;
if(userreference.isalive)
在弱引用建立時,會向其建構函式傳遞乙個新的引用物件,在要重新訪問物件是必須通過isalive屬性來判斷物件是否被gc**,如果被**的話要重新建立。
C 強引用和弱引用
鏈結器處理強引用和弱引用的過程幾乎是一樣的,只是對於未定義的弱引用,鏈結器不認為它是乙個錯誤,一般預設其為 0 位址為 0 或者是乙個特殊的值,以便程式 能夠識別。attribute weak extern int a printf a d n a 我們可以將它編譯成乙個可執行檔案,gcc 並不會報...
C 中的弱引用
了解弱引用之前,先了解一下什麼是強引用 例如 object obj new object 就是乙個強引用,記憶體分配乙份空間給用以儲存object資料,這塊記憶體有乙個首位址,也就是obj所儲存的資料,記憶體分配的空間中不僅僅儲存著object物件資訊,還儲存著自己 object本身 被引用的次數。...
C 中的弱引用
了解弱引用之前,先了解一下什麼是強引用 例如 object obj new object 就是乙個強引用,記憶體分配乙份空間給用以儲存object資料,這塊記憶體有乙個首位址,也就是obj所儲存的資料,記憶體分配的空間中不僅僅儲存著object物件資訊,還儲存著自己 object本身 被引用的次數。...