1. 程式人生 > >關於Java和C#的內部類的小記

關於Java和C#的內部類的小記

今天在看Java方面的書籍的時候看到這樣一段話,說在Java中的內部類不能包含靜態方法和欄位,之後巢狀類中可以包含(內部類和巢狀類說的都是類中的子類,只不過巢狀類指的是靜態的子類,用static修飾),我就在想C#中是不是也有這樣的要求呢。於是開啟編譯器開始嘗試,結果發現C#中的內部類是可以包含靜態欄位和方法的,不過在除該內部類所在的外部類之外的其他類中訪問這些靜態欄位和方法的時候是不能通過內部類物件來訪問的,只能通過“內部類名.靜態欄位/方法來訪問的”。

在Java中建立內部類物件的時候,首先需要建立外部類物件,然後通過這個外部類物件來建立內部類物件,如下:

public class A{

     public class B{

     }

    public B getB(){

           return new B();

      }

}

那麼建立B的物件需要這樣寫:

 A a=new A();

A.B b= a.new B();

或者

A a=new  A();

A.B b=a.getB();

而在C#中則可以這樣寫:

A.B b=new A.B();