類別與物件區分對掌握 OO 程式設計至關重要。類別是成員封裝,但實例化物件並在其資料成員上操作才是完成任務根本。實例化語法:MyClass myObject = new MyClass(),new 語義呼叫對應建構函式。C# 所有物件建立於受控堆積。實例化後類型稱「物件」,核心特徵為擁有自己專屬資料成員副本,稱「實例成員」。非特定物件專屬者稱「靜態成員」,類別中用 static 宣告。僅操作靜態成員者稱「靜態函式成員」。C# 靜態成員只能透過類別名稱存取:
using System;
class A
{
public int count;
public void F() { Console.WriteLine(this.count); }
public static string name;
public static void G() { Console.WriteLine(name); }
}
class Test
{
public static void Main()
{
A a1 = new A(); A a2 = new A();
a1.F(); a1.count = 1; a2.F(); a2.count = 2;
A.name = "CCW"; A.G();
// 錯誤:a1.name、a1.G() 無法編譯
}
}
this.count 與直接 count 語義相同。靜態成員函式無 this 指標。class Employee
{
public Employee(string name, string alias)
{
this.name = name; // 成員欄位
this.alias = alias; // 成員欄位
}
}
CalcTax(this);
public int this[int param]
{
get { return array[param]; }
set { array[param] = value; }
}