class Point { public int x, y; private static int pointCount = 0; public Point() { pointCount++; } public Point(int x, int y) : this() { this.x = x; this.y = y; } }
這個範例有兩個建構子,第一個無參數建構子在呼叫時會將pointCount累加;第二個兩參數建構子呼叫this(),表示在執行該建構子區塊前,會先呼叫無參數建構子,也就會累加pointCount,這種方式就可以紀錄以建構子建立執行個體的次數。
說明與建議
- 這僅能從類別中知道物件數量,並無法知道各個物件的內容。
- 為避免pointCount被意外覆寫,宣告為private,若需讀取此值,可另建方法傳回此值。
- 當某些物件不再使用時,可覆寫物件的Finalize()方法,並將pointCount累減。
- 當物件設定為null時,pointCount不會自行累減。若要將pointCount累減,必須將pointCount宣告為屬性,即可在set區塊中,判斷value為null時,將pointCount累減。
沒有留言:
張貼留言