1. 程式人生 > >C#的內部類

C#的內部類

      C#中的內部類能夠使用外部類定義的型別和靜態方法,但是不能直接使用外部類的例項方法,直接看來,外部類對於內部類的作用更像是一個名稱空間,在C#中,始終可以用(只要訪問控制允許)
Sys.Model.Key   key = new Model.Key();  
來建立一個內部類的例項,這個例項與外部類的任何例項沒有任何直接的關係。類似於Java中的靜態內部類。   
       在C#中,類區分為Nested Class和Not-Nested Class,前者是宣告在其他資料型別內部的類。後者是直接定義在某一個名稱空間的類。
  
      非內嵌類只允許使用public和internal的訪問控制,而內建類則允許使用所有的五種訪問控制符,private, protected , internal protected,public和internal。內部類也可以訪問外部類的所有方法,包括instance方法和private方法,但是需要顯式的傳遞一個外部類的例項。 
       建立內部類的一個目的是為了抽象外部類的某一狀態下的行為,或者內部類僅在外部類的某一特定上下文存在。或是隱藏實現,通過將內部類設為private,可以設定僅有外部類可以訪問該類。內部類的另外一個重要的用途是當外部類需要作為某個特定的類工作,而外部類已經繼承與另外一個類的時候,因為C#不支援多繼承,所以建立一個對應的內部類作為外部類的一個façade來使用.
       內部類的反射名稱的.改為+,例如:Sys.Model+Key【其中Key是Model的內部類】