我的小狗皮皮小學作文
一、靜態方法和實例方法

靜態方法是一個特殊的成員方法,不屬于類的某一個具體的實例或對象,而屬于類本身。靜態方法不對特定實例進行操作,只能訪問類中的靜態成員。訪問靜態方法只能使用類名,而不需要創建對象,也不能使用對象名類引用,聲明靜態方法修飾符中必須有static關鍵字。
實例方法可以使用類的任何成員。調用實例方法時,必須使用類的實例或對象來引用。實例方法對類的某個給定的實例進行操作,在實例方法類中可以使用this來訪問實例。調用實例方法時,必須先創建一個對象。
簡單的說,靜態方法只能訪問靜態成員,實例方法可以訪問靜態和實例成員。之所以不允許靜態方法訪問實例成員變量,是因為實例成員變量是屬于某個對象的,而靜態方法在執行時,并不一定存在對象。同樣,因為實例方法可以訪問實例成員變量,如果允許靜態方法調用實例方法,將間接地允許靜態方法使用實例成員變量,這是錯誤的。基于同樣的道理,靜態方法中不能使用關鍵字this。
例一、編程使用靜態方法和實例方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { class A { int exaVar;/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/p>
輸出的結果為:2
二、虛方法和非虛方法
若一個實例方法的聲明中含有virtual修飾符,則稱該方法為虛方法。若其中沒有virtual修飾符,則稱該方法為非虛方法。
非虛方法的實現是一成不變的,無論該方法是在聲明它的類的實例上調用還是在派生類的實例上調用,實現均相同。與此相反,虛方法的實現可以由派生類取代。取代所繼承的虛方法的實現的過程稱為重寫該方法。在虛方法調用中,該調用所涉及的那個實例運行時類型確定了要被調用的究竟是該方法的哪一種實現。在非虛方法調用中,相關的實例的編譯時類型是決定性因素。
例二、使用虛方法和非虛方法在派生類中調用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { public class A { public virtual void ab()/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/pic/p>
從輸出的結果中可以看出虛方法的實現是由派生類取代并且由它的方法實現,而非虛方法的實現是定義的類和派生類的各自由它們的方法實現。
三、虛方法和重寫方法
重寫方法用相同的簽名重寫所繼承的虛方法。虛方法聲明用于引入新方法,而重寫方法聲明則用于使現有的繼承虛方法專用化。用override聲明所重寫的那個方法稱為已重寫了的基方法。
重寫聲明和已重寫了的基方法具有相同的聲明可訪問性。換句話說,重寫聲明不能更改所對應的 虛方法的可訪問性。但是,如果已重寫的基方法是protected,并且聲明它的程序集不是包含重寫方法的程序集,則重寫方法聲明的可訪問性必須是protected。
重寫override一般用于接口的實現和繼承類的方法改寫時應注意:
(1)覆蓋的方法的標志要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果
(2)覆蓋的方法的返回值必須和被覆蓋的方法的返回值一致
(3)覆蓋的方法所拋出的異常必須和被覆蓋的方法所拋出的異常一致,或者是其子類
(4)被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進行覆蓋
例三、創建一個虛方法并重寫這個虛方法,通過調用兩個方法比較結果
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { class A { public virtual void a()/pic/pic/pic/pic/pic/pic/pic/p>
輸出的結果為:這是重寫后的方法
這是虛方法
這是重寫后的方法
四、外部方法(這個方法很新奇,聯想到很多)
當方法聲明包含extern修飾符時,稱該方法為外部方法。外部方法是在外部實現的,編程語言通常是使用C#以外的語言。外部方法不可以是泛型。
extern修飾符通常與DllImport屬性一起使用,從而使外部方法可以由DLL(動態鏈接庫)實現。執行環境可以支持其他用來提供外部方法實現的機制。當外部方法包含DllImport屬性時,該方法聲明必須同時包含一個static修飾符。
在使用DLLImport屬性時,一定要引入System.Runtime.InteropServices命名空間,此命名空間是提供各種各樣支持COM interop及平臺調用服務的成員。
例四、通過外部方法和Dlllmport屬性調用“User32.dll”實例自定義信息提示框的功能
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices;/pic/pic/pic/pic/pic/p>
五、分部方法
若一個方法聲明中含有partial修飾符,則稱該方法為分部方法。只能講分部方法聲明為分部類型的成員,而且要遵守約束數目。分部方法有著嚴格的限制。分部方法必須在分部類或分部機構內聲明。它們必須是私有的,不能返回值,不能有輸出參數。因為任何針對沒有被實現的分部方法的調用都會簡單地被忽略,所以說這些限制是非常有必要的。
分部方法不能作為一個明確分配的變量,僅被代碼生成器在處理輕量級事件的時候使用。假設用戶解析一個數據庫或者一個XML文件,然后生成了數據類,結果會發現有數十個類,幾百個屬性以及一大堆泛型和模板文件等。分部方法另外一個經常被用到的地方是驗證,或者讓屬性的setter去更新另一個屬性。所以如果用戶要使用產生的代碼,或者在運行時有幾百個事件和千個方法調用的話(其實大多數情況下只用到了其中的一點點),就可以選擇分部方法。分部方法在聲明和使用時要比事件容易得多,如果沒有用到它們,它們就會消失。從分部方法必須是私有的限制中,
Alexander發現了該方法的不足之處,即如果用戶喜歡原數據驅動的應用,并且已經被ASP.NET的數據綁定所困擾時(因為沒有其他的方法可以附上原數據),那么,將來會出現丟失信息的可能。
例五、創建一個類的分部方法并且在另一個部分中引用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Text { public partial class Program/pic/pic/pic/pic/pic/pic/pic/pic/p>
輸出的結果為:150
【我的小狗皮皮小學作文】相關文章:
小狗皮皮小學四年級作文(通用20篇)01-13
我的小狗小學作文(精選26篇)12-23
我的小狗豆豆小學作文(精選31篇)04-24
小學皮皮歷險記作文(精選68篇)02-27
小兔皮皮作文03-02
我與小狗小學作文550字(精選49篇)01-11
我的寵物小狗作文12-25
我和我的小狗作文09-08
小學生作文:我喜歡小狗(精選19篇)02-05
我愛小狗寧寧的作文01-07
- 相關推薦