本章新知識點有:
1、擴充套件方法
有許多擴充套件類的方式。如果有類的源**,繼承就是給物件新增功能的好方法。 但如果沒有源**,該怎麼辦?此時可以使用擴充套件方法,它允許改變乙個類,但不需要該類的源
**。擴充套件方法是靜態方法,它是類的一部分,但實際上沒有放在類的源**中。假定上例中的money類需要乙個方法addtoamomtrdec涮 am。mttoadd,。 但是,由於某種原因,程式集最初的源**不能直接修改。此時必須做的所有工作就是建立乙個靜態類,把方法 addtoamounto新增為乙個靜態方法。對應的**如下:
namespace wrox
public statio class moneyextensionpublic static void addtoamount(this money money` decimal amounttoadd)
money.amount += amounttoadd`
注意addtoamomjo方法的引數。對於擴充套件方法,第乙個引數是要擴充套件的型別,它放在血s關鍵字的後面。這告訴編譯器,這個方法是money型別的一部分。在這個例子中,money是要擴充套件的型別。在擴充套件方法中,可以訪問所擴充套件型別的所有公有方法和屬性。
在主程式中,addtoamomto方法看起來像是另乙個方法。它沒有顯示第乙個引數,也不能對它進行任何處理。要使用新方法,需要執行如下呼叫,這與其他方法相同:
即使擴充套件方法是靜態的,也要使用標準的例項方法語法。注意這裡使用 cash1例項變數來呼叫addtoamounto,而沒有使用型別名。如果擴充套件方法與類中的某個方法同名,就從來不會呼叫擴充套件方法。類中已有的任何例項方法優先。
2、結構與類的區別:a:結構存在堆中,類放在堆中。b:結構是值型別繼續自system.valuetype,類是引用類刑。c:結構不能繼承,類可以。d:結構可以不例項化就使用,但類不行。
紅皮書c 高階程式設計 第6版 第3章 物件和型別
3.2類成員 1.資料成員 2.函式成員 提供了操作類中資料的功能 包含 方法,屬性,建構函式,終結器,運算子,索引器 1 方法 1 方法宣告 modifiers return type methodname parameters method body 2 方法呼叫 methodname para...
紅皮書c 高階程式設計 第6版 第3章 物件和型別
3.7object類 所有.net類都派生於system.object,如沒有指定基類,編譯器就自動假定這個類派生於object 因此,除了自己定義的方法屬性外,可以訪問object定義的公共或受保護的成員方法 system.object方法 1.tostring 獲取物件字串表示 2.gethas...
C 高階程式設計(第9版) 第06章 陣列
好久沒發東西了 一停下來就會變懶。雖然沒完成,也就是它吧 以下正文 本章要點 1 簡單陣列 2 多維陣列 3 鋸齒陣列 4 array類 5 作為引數的陣列 6 列舉 7 元組 8 結構比較 同一型別和不同型別的多個物件 如果需要使用同一型別的多個物件,就可以使用集合 參見第10章 和陣列。c 用特...