C# 類別語法與 C++ 相似,但細節差異較大。基本範例:
class MyClass : MyBaseClass // 基類無需存取修飾詞
{
private int a;
public int Num() { return 0; }
}
public class MyBaseClass { }
C# 類別存取修飾詞:
internal(預設):僅限目前專案內存取public:任何專案皆可存取abstract:抽象類別,不可實例化,可包含抽象成員sealed:密封類別,不可被繼承修飾詞可組合使用(如 public abstract)。
object,可使用其方法(ToString()、Equals() 等)。class A { } 而非 class A { };。class MyClass { int count = 10; } // C++ 需在建構函式初始化
實體建構函式不允許在其中初始化欄位(欄位初始化器先執行)。C# 新增靜態建構函式:
public class MyClass
{
static MyClass() // 無修飾詞,無參數
{
// 程式啟動時自動執行,用於初始化靜態欄位
}
}
C# 有垃圾回收機制,不需在解構函式釋放記憶體。解構函式(~MyClass())實際上是 Finalize() 的語法糖,僅在實作 IDisposable 或需釋放非受控資源時使用。
// 基類
public virtual void MyMethod() { }
// 衍生類
public override void MyMethod() { }
關鍵字:基類用 virtual,衍生類用 override(C++ 僅用 virtual)。
原理類似 C++,但禁止多載:+=、-=、*=、/=、%=、位元指派、邏輯運算子(&&、||)、指派運算子(=)。
成對多載規則:多載 > 必須多載 >=;多載 == 必須多載 !=;同理 </<= 等。
try { }
catch { }
finally { } // 無論是否拋出例外,finally 都會執行
這與 C++ 的 RAII 模式不同,C# 透過 finally 確保資源清理邏輯必定執行。
C# 允許使用指標,但必須標記為 unsafe 區塊:
public unsafe int Num() { return 0; } // 方法層級
unsafe class MyClass { } // 類別層級
unsafe struct MyStruct { } // 結構層級
編譯需加入 /unsafe 參數。指標語法與 C++ 相同(int* p),但僅能在 unsafe 範圍內使用。
介面源自 COM,僅定義方法與屬性簽章(類似純抽象類別)。關鍵字 interface:
interface IMyInterface
{
void DoSomething();
int MyProperty { get; set; }
}
class MyClass : IMyInterfacepublic,不可加修飾詞本系列著重 C++ 開發者最常用的語法對比。C# 進階特性(委派、事件、屬性、泛型、LINQ、非同步等)建議參考《C# 高級程式設計》等經典教材深入學習。掌握 .NET 執行機制(CLR、GC、JIT)同樣重要,祝各位在 .NET 生態系發展長遠!