關於C# 類和對象詳情

一、對象的定義和創建

定義類對象的方法為:

類名 對象名;

類是引用類型的,當定義瞭對象之後,系統會為數據引用分配存儲空間,但是用來保存對象的實際數據的空間並沒有分配。

對象的創建

創建對象時需要使用new運算符new運算符可以為任意指定類類型的實例分配並初始化內存。

創建對象的語法形式如下: 對象名 = new類名();

代碼示例,對象的定義和創建:

class Program
{
    static void Main(string[] args)
    {
        //對象的定義和創建
        Test t = new Test();
        
        //或者 先定義
        Test t1;
        // 使用時創建
        t1 = new Test();
    }
}

class Test
{
    
}  

行對象的創建時,需要註意:

  • new運算符後為要創建的對象所屬類的類名
  • 類名後的圓括號不能省略
  • 可以將對象的定義和創建合並在一起

二、、對象的初始化

C#中實現對象初始化的方式有兩種:

  1. 借助構造函數或使用
  2.  對象初始化列表。

1. 借助構造函數或使用

new運算表達式的圓括號中所帶參數並不是任意的,圓括號中是否支持參數、可以攜帶幾個參數是由對象所屬類的構造函數形式決定的。

C#的類支持兩種構造函數:實例構造函數和靜態構造函數

實例構造函數是實現初始化類實例所需操作的成員。

靜態構造函數是一種用於在第一次加載類本身時實現其初始化所需操作的成員。

C#類的靜態構造函數初始化類層次的項目。通常,靜態構造函數初始化類的靜態字段。

類層次的項目初始化必須在任何靜態成員被引用之前,同時也必須在該類的所有對象創建之前。

2. 實例構造函數

實例構造函數是一個特殊的方法,它在創建類的每個新對象時執行,用以初始化對象的狀態。

實例構造函數應該聲明為public

下面是實例構造函數的一般定義形式:

// 無參構造
public 類名()
{
    函數體
}
// 帶參構造
public 類名(參數列表)
{
    函數體
}

定義實例構造函數時需註意:

  • 實例構造函數可以帶有參數,也可以不帶參數,
  • 實例構造函數的參數設置決定瞭對象創建時new運算表達式中圓括號中的參數格式;
  • 實例構造函數可以重載。

其他說明:

  • 當類的聲明中沒有顯式提供實例構造函數時,編譯器會提供一個隱式的默認構造函數。
  • 默認構造函數不帶參數,並且方法體為空。
  • 調用默認構造函數實現對象創建時,new運算表達式後的圓括號內不能帶有參數。

3. 靜態構造

靜態構造函數:

  • C#類的靜態構造函數初始化類層次的項目。
  • 通常,靜態構造函數初始化類的靜態字段。
  • 類層次的項目初始化必須在任何靜態成員被引用之前,同時也必須在該類的所有對象創建之前。

使用靜態構造函數時,需註意:

  • 靜態構造函數隻有一個,不能重載,並且不能帶參數;
  • 靜態構造函數不能有訪問修飾符,它由系統自動調用;
  • 類的靜態構造函數和實例構造函數可以共存;
  • 靜態構造函數不能訪問類的實例成員。

代碼示例:

class Program
{
    static void Main(string[] args)
    {
        Test t = new Test();
        // 輸出: 0,0,1
        Console.WriteLine(t.X + "," + t.Y + "," + Test.Z)

        Test t1 = new Test(1, 2);
        // 輸出: 1,2,2
        Console.WriteLine(t1.X + "," + t1.Y + "," + Test.
                    
        Test t2 = new Test(3, 4);
        // 輸出: 3,4,3
        Console.WriteLine(t2.X + "," + t2.Y + "," + Test.

        Console.ReadLine();
    }
}

class Test
{
   public int X = 0;
   public int Y = 0;

   public static int Z = 0;

    // 無參構造
    public Test() { Z++; }

    // 帶參構造
    public Test(int X, int Y)
    {
        this.X = X;
        this.Y = Y;
        Z++;
    }

    // 靜態構造 -- 初始化Z值
    static Test()
    {
        Z = 0;
    }
}    

三、對象的引用

對象成員的引用形式為:

對象名.實例成員名
// 或者
對象名.實例成員名(實參列表)

對象的運算同一類的兩個對象支持賦值、相等與不相等運算如下所示:

Test t = new Test();
Test t1 = new Test();

// 輸出:false
Console.WriteLine(t == t1);
// 對象的賦值操作
t = t1;
// 輸出:true --> 此時t,t1表示為同一對象
Console.WriteLine(t == t1);

對象之間除瞭可以進行比較,賦值操作之外。還可以至此isas運算符,isas運算符更多的應用於基類和派生類之間進行類型轉換,詳細說明在繼承處講解。

到此這篇關於關於C# 類和對象詳情的文章就介紹到這瞭,更多相關C# 類和對象內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: