C 高階程式設計 第7版 筆記 第3章物件與型別

2021-05-27 16:49:42 字數 937 閱讀 9511

本章新知識點有:

1、擴充套件方法

有許多擴充套件類的方式。如果有類的源**,繼承就是給物件新增功能的好方法。     但如果沒有源**,該怎麼辦?此時可以使用擴充套件方法,它允許改變乙個類,但不需要該類的源  

**。擴充套件方法是靜態方法,它是類的一部分,但實際上沒有放在類的源**中。假定上例中的money類需要乙個方法addtoamomtrdec涮 am。mttoadd,。 但是,由於某種原因,程式集最初的源**不能直接修改。此時必須做的所有工作就是建立乙個靜態類,把方法 addtoamounto新增為乙個靜態方法。對應的**如下:

namespace wrox

public statio class moneyextension

public 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 用特...