13.C#部分型別和靜態類(七章7.1-7.2)

來源:互聯網
上載者:User

標籤:

  再大的東西不去找,也就沒了,再小的知識不去記,也就忘了。今天來寫一寫C#中的部分型別和靜態工具類,這些兩個概念可能在我們的日常使用過程中都使用過,可能大家對這些內容覺得這些不是應該有的東西嘛,那就來複習一下吧。

  部分型別,個人理解是對同一事物在兩個不同空間的描述,編譯器將組織我們編寫的在不同檔案中代碼,組合成一個完整的描述。我們不能在一個檔案中編寫成員的一半代碼,而把另外一半代碼放到另外一個檔案中,每個獨立的成員必須完整地位於所處的檔案中。如有一個Map類,成員屬性放在Map0.cs中,而成員方法放在Map1.cs中,注意使用partial關鍵字。

 1 //Map0.cs 2 public partial class Map 3 { 4     public long Width { get; set; } 5     public long Height { get; set; } 6 } 7 //Map1.cs 8 public partial class Map 9 {10     public long GetSize()11     {12         return Width * Height;13     }14 }

  還有一種常見的用法是當一個類要實現某一個介面同時繼承某一個類時,分別在不同檔案編寫各自的實現。現有一個新類Canvas,代碼如下

 1 //Canvas0.cs 2 public partial class Canvas : IComparable 3 { 4     public int CompareTo(object obj) 5     { 6         return this.Price.CompareTo(((Canvas)obj).Price); 7     } 8 } 9 //Canvas1.cs10 public partial class Canvas : Map11 {12     public double Price { get; set; }13 }

  由上可以看到在Canvas0.cs中是對IComparable介面的實現,而在Canvas1.cs中是對Map類的繼承,不同檔案分清了不同的功能。但我們在日常使用中,真心不用說要使用部分型別而去使用部分型別,不然檔案多了,自己也搞不明白了,應該是不要刻意吧。部分型別的作用往往在於我們在編寫自己的類時,後台幫我們產生一個使用partial的類,分清了代碼檔案的歸屬。

------------------------------------------------------------------------------------------------------

  對於靜態工具類,所有程式都會有自己編寫的或者網上現有的工具類,常用如字串操作類,資料庫操作類等等。說下工具類的一些特點:

  1. 所有成員都是靜態(除了私人建構函式)
  2. 類直接從object中派生
  3. 不應該有狀態,除非涉及快取或單例
  4. 不能存在任何可見的建構函式
  5. 類是密封的

  防止類派生,使用sealed關鍵字,添加一個私人建構函式防止建立執行個體,靜態方法使用static關鍵字,這是C#1中建立工具類的方法,下面看代碼,在C#後續版本中如何?。

1 public static class StringHelper2 {3     public static int GetLen(string str)4     {5         return str.Length;6     }7 }

  C#編譯器知道類是一個靜態類,所以不用產生一個預設建構函式。下面來抄下課本,羅列下編譯器在類定義上執行的大量約束:

  1. 類不能聲明為abstract或sealed
  2. 類不能設定要實現的介面
  3. 類不能設定要繼承的基類
  4. 類不能包含任何非靜態成員,包括建構函式
  5. 類不能包含任何操作符
  6. 類不能包含任何protected或protected internal成員

  請斧正。

 

 

  

13.C#部分型別和靜態類(七章7.1-7.2)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.