再大的東西不去找,也就沒了,再小的知識不去記,也就忘了。今天來寫一寫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.cs 10 public partial class Canvas : Map 11 { 12 public double Price { get; set; } 13 }
由上可以看到在Canvas0.cs中是對IComparable接口的實現,而在Canvas1.cs中是對Map類的繼承,不同文件分清了不同的功能。但我們在日常使用中,真心不用說要使用分部類型而去使用分部類型,不然文件多了,自己也搞不明白了,應該是不要刻意吧。分部類型的作用往往在於我們在編寫自己的類時,後台幫我們生成一個使用partial的類,分清了代碼文件的歸屬。
------------------------------------------------------------------------------------------------------
對於靜態工具類,所有程序都會有自己編寫的或者網上現有的工具類,常用如字符串操作類,數據庫操作類等等。說下工具類的一些特點:
防止類派生,使用sealed關鍵字,添加一個私有構造函數防止創建實例,靜態方法使用static關鍵字,這是C#1中創建工具類的方法,下面看代碼,在C#後續版本中如何實現。
1 public static class StringHelper 2 { 3 public static int GetLen(string str) 4 { 5 return str.Length; 6 } 7 }
C#編譯器知道類是一個靜態類,所以不用生成一個默認構造函數。下面來抄下課本,羅列下編譯器在類定義上執行的大量約束:
請斧正。