程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# 構造函數與析構函數

C# 構造函數與析構函數

編輯:C#入門知識

(1)構造函數
<1>除非是static,否則編譯器將會給每一個沒有構造函數的類指定一個默認的構造函數
<2>構造函數private時候,類不能被實例化
<3>派生類可以通過base來顯式的調用基類的構造函數,當無顯式調用時,編譯器會自動的調用基類的默認構造函數
<4>基類沒有默認構造函數,派生類必須顯式的調用base
<5>構造函數可以標記為 public,protected,private,internal,protected internal
<6>實例構造函數,靜態構造函數。初始化靜態類或者非靜態類中的靜態變量就必須定義靜態構造函數。
<7>私有構造函數
私有構造函數存在的意義是為了防止被實例化,當一個類不想被聲稱為靜態類,同時裡面都是靜態成員時候,可以使用靜態構造函數。示例:

public class Counter
{
    private Counter() { }
    public static int currentCount;
    public static int IncrementCount()
    {
        return ++currentCount;
    }
}


class TestCounter
{
    static void Main()
    {
        
        Counter.currentCount = 100;
        Counter.IncrementCount();
        Console.WriteLine("New count: {0}", Counter.currentCount);


        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

<8>C#不提供復制構造函數,如果需要得自己編寫。
<9>靜態構造函數。
靜態構造函數自動調用,發生在創建第一個實例或者引用任何靜態成員之前。


(2)析構函數
<1>析構函數不能被繼承,樣式跟C++一樣
class Car
{
    ~Car()  // destructor
    {
        // cleanup statements...
    }
}

<2>析構函數時自動被調用,是通過垃圾回收機制
程序員無法控制何時調用析構函數,因為這是由垃圾回收器決定的。 垃圾回收器檢查是否存在應用程序不再使用的對象。 如果垃圾回收器認為某個對象符合析構,則調用析構函數(如果有)並回收用來存儲此對象的內存。 程序退出時也會調用析構函數。


<3>析構函數的隱式轉換
protected override void Finalize()
{
    try
    {
        // Cleanup statements...
    }
    finally
    {
        base.Finalize();
    }
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved