▪️.Net - 類型宣告
2025-3-18
| 2025-3-19
字數 3154閱讀時間 8 分鐘
💡
C#提供多種關鍵字用於定義不同類型的程式結構。這些類型定義關鍵字決定了程式碼的組織方式和行為特性。

namespace(命名空間)


命名空間用於組織和分類程式碼,避免命名衝突。

基本語法

範例

重要特性

  • 命名空間可以跨越多個檔案和組件
  • 使用 using 關鍵字引入命名空間
  • 命名空間通常使用 PascalCase 命名法
  • 慣例上使用公司和專案名稱作為命名空間名稱

class(類別)


類別是 C# 中最基本的參考型別,用於封裝資料和行為。

基本語法

範例

重要特性

  • 類別是參考型別
  • 類別支援繼承(單一繼承)
  • 可實作多個介面
  • 可定義靜態和非靜態成員
  • 使用 new 關鍵字建立執行個體

struct(結構)


結構是值型別,適用於小型、不需要繼承的資料結構。

基本語法

範例

重要特性

  • 結構是值型別(存儲在堆疊上)
  • 結構無法繼承自其他結構或類別,但可實作介面
  • 結構預設提供無參數建構函式
  • 結構成員不能宣告為 protected
  • 結構在傳遞時作為值複製,而非參考
  • 適合小型、輕量和不可變的數據類型

interface(介面)


介面定義了一組相關功能的契約,由類別或結構實作。

基本語法

範例

重要特性

  • 介面只包含成員的宣告,不包含實作(C# 8.0 以前)
  • C# 8.0 引入預設介面方法
  • 類別和結構可實作多個介面
  • 介面可以繼承自其他介面
  • 介面名稱慣例上以「I」開頭
  • 介面成員預設為 public,不能指定存取修飾詞

enum(列舉)

列舉定義一組具名常數值,提高程式碼的可讀性。

基本語法

範例

重要特性

  • 列舉預設基底型別為 int
  • 可指定基底型別為 bytesbyteshortushortintuintlongulong
  • 列舉常數值默認從 0 開始遞增
  • 可手動設定列舉常數值
  • 支援位元旗標(使用 [Flags] 屬性標記)

record(記錄)- C# 9.0+

記錄是一種參考型別,專為不可變數據設計,具有值語義。

基本語法

範例

重要特性

  • 記錄預設實作值相等性(而非參考相等性)
  • 自動實作解構功能
  • 提供 with 表達式進行非破壞性修改
  • 支援繼承(但記錄只能繼承自記錄)
  • 預設生成 ToStringEqualsGetHashCode 等方法
  • 適合用作數據傳輸物件(DTO)和不可變數據模型

delegate(委派)


委派是指向方法的類型安全參考,用於實作事件和回呼。

基本語法

範例

重要特性

  • 委派是參考型別
  • 委派可以多播(註冊多個方法)
  • 委派是類型安全的函數指標
  • 委派是事件的基礎
  • C# 提供了泛型委派如 ActionFuncPredicate
  • 委派可以使用匿名方法和 Lambda 表達式

泛型型別定義


泛型提供了型別參數化的能力,實現型別安全和代碼重用。

基本語法

範例

型別約束

  • where T : struct - T 必須是實值型別
  • where T : class - T 必須是參考型別
  • where T : notnull - T 必須是非 null 型別
  • where T : unmanaged - T 必須是非受控型別
  • where T : new() - T 必須有公共無參數建構式
  • where T : <基底類別名稱> - T 必須是指定基底類別的衍生類別
  • where T : <介面名稱> - T 必須實作指定介面
  • where T : U - T 必須是或實作參數 U

重要特性

  • 泛型提供編譯期的型別安全
  • 避免型別轉換和裝箱/拆箱操作
  • 可應用於類別、結構、介面、委派和方法
  • 支援型別約束限制型別參數
  • 提高程式碼重用性和效能
  • Dotnet
  • .Net - 存取修飾詞.Net - 迴圈語句
    Loading...