轉換操作是一種等代類型(Substitutability)間操作轉換操作。等代類型就 是指一個類可以取代另一個類。這可能是件好事:一個派生類的對象可以被它基
ICloneable看上去是個不錯的主意:為一個類型實現ICloneable接口後就可 以支持拷貝了。如果你不想支持拷貝,就不要實現它。但你的對象並不 是在一
如果你運行這個程序,你就會發現d2為null。雖然 Derived是從BaseType派生的,但從BaseType類繼承的Clone()函數並不能正確的 支持
你的類型應該有一個順序關系,以便在集合中描述它們如何存儲以及排 序。.Net框架為你提供了兩個接口來描述對象的順序關系:IComparable 和 IComp
這不能通過編譯,因 為對於公共的Customer.CompareTo(Customer right)方法在參數上不匹配,而 IComparable. Comp
你,做為類的設計者,非序列化成員給你多添加了一點點工作。 在序列化過程中,序列化API不會為你初始化非序列化成員。因為類型的構造函 數沒有被調用,所以成員的初
序列化流 是以鍵/值對應的方法來保存每一個元素的。默認的特性生成的代碼是以變量名 做為鍵來存儲值。當你添加了ISerializable接口後,你必須匹配鍵名以
與命令式編程相比,申明式編程可以用更簡單,更清楚的方法來描述軟件的 行為。申明式編程就是說用申明來定義程序的行為,而不是寫一些指令。在C#裡 ,也和其它大多數
同樣,你還必須寫一些代碼,來對一個集合運行排 序,而該集合中的元素是添加了DefaultSort特性的對象。你將用到反射來發現 正確的屬性,然後比較兩個不同對
AddMsg方法演示了一個恰當的方法來引發事件。臨時的日志句柄 變量 是很重要的,它可以確保在各種多線程的情況下,日志句柄也是安全的。 如果沒有這個引用的CO
另一個類可以直接輸出到系統事件日志:class EventLogger{ private static string eventSource; privat
事件會在發生一些事情時,通知任意多個對消息感興趣 的客戶。Logger類不必預先知道任何對消息感興趣的對象。Logger類只 包含一個事件。大多數Window
我:“兒子,到院子裡除草去,我要看會書。”斯科特: “爸,我已經打掃過院子了。”斯科特:“爸,我已經 把草放在除草機上了。”斯科特:“爸,除草機不能啟動了 。
粗略的看一下,感覺實現接口和虛函數重載是一樣的。你定義了一些對象, 但是這些對象是在另一個類型裡申明的。你被第一感覺騙了,實現接口與虛函數 重載是完全不同的。
C#語言為你的設計介紹了一種新的語法,你可以選擇這種技術讓你的設計與 其它的開發人員進行交流,這些開發人員可以維護,擴展或者是使用你設計的軟 件。C#的所有類
抽象類在類的繼承中提供了一個常規的“祖先”。一個接口描述 了一個可以被其它類型實現的原子級泛型功能。各有千秋,卻也不盡相同。接口 是一種合約式設計:一個類型實
前面的代碼創建了一個整型的數組鏈表,而且使用 IList接口指針添加了兩個不同的值到集合中。通過重載OnInsert()方法, IntList類在添加類型時會
IListSource讓用戶通過GetList()方法 來訪問內容,它同時還有ContainsListCollection屬性,因此用戶可以修改全部 的集合結