C#學習筆記2:C#中修飾類相關的關鍵字
阿新 • • 發佈:2019-02-14
修飾符用於限定型別以及型別成員的申明,C#中的修飾符按功能可分為四部分:屬性修飾符,存取修飾符,類修飾符和成員修飾符。 屬性修飾符: [Serializable]:按值將物件封送到遠端伺服器。在按值封送物件時,就會建立一個該物件的副本,並將其序列化傳送到伺服器。 任何對該物件的方法呼叫都是在伺服器上進行的。 [STAThread]:是Single-Threaded Apartment單執行緒套間的意思,是一種執行緒模型(執行緒模式用於處理元件在多執行緒的環境裡並行與並互的方式),套間執行緒(STAThread)模式中介面跨執行緒傳遞必須被排程(Marshal),不排程直傳肯定會失敗!而MTA或FreeThread模式中的介面可以不經排程直接傳遞。這種排程在特定的環境中非常影響效能(可有幾百倍之差)。如VB裡只支援STAThread模式。FreeThread模式的元件會在裡面表現成和跨程序一樣慢!執行緒模式是微軟的COM基礎中的極其重要的概念。一定要吃透! [MTAThread]:是MultiThreaded Apartment多執行緒套間的意思,同上也是一種執行緒模型。 存取修飾符:public:存取不受限制。 private:只有包含該成員的類可以存取。 internal:只有當前工程可以存取。 protected:只有包含該成員的類以及派生類可以存取。 類修飾符: abstract:抽象類。指示一個類只能作為其它類的基類。 sealed:密封類。指示一個類不能被繼承。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被繼承的。 成員修飾符: abstract:指示該方法或屬性沒有實現。 sealed:密封方法。可以防止在派生類中對該方法的override(過載)。不是類的每個成員方法都可以作為密封方法密封方法,必須對基類的虛方法進行過載,提供具體的實現方法。所以,在方法的宣告中,sealed修飾符總是和override修飾符同時使用。 delegate:委託。用來定義一個函式指標。C#中的事件驅動是基於delegate + event的。 const:指定該成員的值只讀不允許修改。 event:宣告一個事件。 extern:指示方法在外部實現。 override:重寫。對由基類繼承成員的新實現。 readonly:指示一個域只能在宣告時以及相同類的內部被賦值。 static:指示一個成員屬於型別本身,而不是屬於特定的物件。即在定義後可不經例項化,就可使用。 virtual:指示一個方法或存取器的實現可以在繼承類中被覆蓋。 new:在派生類中隱藏指定的基類成員,從而實現重寫的功能。 若要隱藏繼承類的成員,請使用相同名稱在派生類中宣告該成員,並用 new 修飾符修飾它。