值類型是數據的容器,它們不具備多太性。另一方面就是說,.Net框架被設 計成單一繼承的引用類型,System.Object,在整個繼承關系中做為根
我們已經討論過,處理一個占用了非托管資源對象是很重要的。現在是時候 來討論如何寫代碼來管理這些類占用的非內存資源了。一個標准的模式就是利用 .Ne
C#語言為你的設計介紹了一種新的語法,你可以選擇這種技術讓你的設計與 其它的開發人員進行交流,這些開發人員可以維護,擴展或者是使用你設計的軟 件。
粗略的看一下,感覺實現接口和虛函數重載是一樣的。你定義了一些對象, 但是這些對象是在另一個類型裡申明的。你被第一感覺騙了,實現接口與虛函數 重載是
可以用事件給你的類型定義一些外部接口。事件是基於委托的,因為委托可 以提供類型安全的函數簽名到事件句柄上。加上大多數委托的例子都是使用事件 來說明
你已經知道,所謂的只讀屬性就是指調用者無法修改這個屬性。不幸運的是 ,這並不是一直有效的。如果你創建了一個屬性,它返回一個引用類型,那麼調 用者就
與命令式編程相比,申明式編程可以用更簡單,更清楚的方法來描述軟件的 行為。申明式編程就是說用申明來定義程序的行為,而不是寫一些指令。在C#裡 ,也
對象的持久是類型的一個核心功能。這是一個在你忽略對它的支持以前,沒 有人會注意到的基本元素之一。 如果你的類型不能恰當的支持序列化,那麼對 於把你
你的類型應該有一個順序關系,以便在集合中描述它們如何存儲以及排 序。.Net框架為你提供了兩個接口來描述對象的順序關系:IComparable 和
ICloneable看上去是個不錯的主意:為一個類型實現ICloneable接口後就可 以支持拷貝了。如果你不想支持拷貝,就不要實現它。但你的對象
你可以用new修飾符來重新定義一個從基類中繼承來的非虛成員。你可以這樣 做,但並不意味著需要這樣做。重新定義非虛方法會導致方法含意的混亂。如果 兩
隨著類的數量增加,創建二進制的組件就變得很平常了:你想分離部分功能 。所有不同的是,二進制組件可以讓你獨立的保存這些離散的功能。創建的組件 程序集
.Net運行環境是語言無關的:開發者可以用不同的.Net語言編寫組件。而且在實際開發中往往就是這樣的。你創建的程序集必須是與公共語言系統(CLS)