共用方式為


C 中面向對象技術的概觀#

在 C# 中,類型的定義,即類別、結構或記錄,就像指定類型可以執行的藍圖一樣。 物件基本上是根據藍圖配置和設定的記憶體區塊。 本文提供這些藍圖及其功能的概觀。 本系列中的下一篇文章介紹 物件。

封裝

封裝 有時稱為面向對象程序設計的第一個支柱或原則。 類別或結構可以指定其每個成員如何存取類別或結構以外的程序代碼。 不針對類別或組件外部使用者的成員會隱藏,以限制編碼錯誤或惡意利用的可能性。 如需詳細資訊,請參閱 面向物件程式設計教學 課程。

成員

型別 的成員 包含所有方法、字段、常數、屬性和事件。 在 C# 中,沒有像某些其他語言那樣的全域變數或方法。 即使是程序的進入點, Main 方法也必須在類別或結構內宣告(隱含使用 最上層語句時)。

下列清單包含可在類別、結構或記錄中宣告的所有各種成員。

  • 領域
  • 常數
  • 性能
  • 方法
  • 建構函數
  • 事件
  • 終結器
  • 索引員
  • 運營商
  • 巢狀類型

如需詳細資訊,請參閱 成員

可及性

某些方法和屬性是要從類別或結構以外的程式代碼呼叫或存取,稱為 客戶端程序代碼。 其他方法和屬性可能只適用於 類別或結構本身。 請務必限制程式代碼的存取範圍,以便只有預期的用戶端程式代碼可以連線。 您可以使用下列存取修飾詞,指定型別及其成員對用戶端程式代碼的存取方式:

預設的輔助功能為 private

遺產

類別(但不是結構)支援繼承的概念。 衍生自另一個類別的類別,稱為 基類,會自動包含基類的所有公用、受保護和內部成員,但其建構函式和完成項除外。

類別可以宣告為 抽象,這表示其中一或多個方法沒有實作。 雖然抽象類無法直接具現化,但它們可作為提供遺漏實作之其他類別的基類。 類別也可以宣告為 密封 ,以防止其他類別繼承自它們。

如需詳細資訊,請參閱 繼承多型

介面

類別、結構及記錄可以實作多個介面。 若要從介面實作,表示型別會實作介面中定義的所有方法。 如需詳細資訊,請參閱 介面

泛型類型

類別、結構及記錄可以使用一或多個類型參數來定義。 用戶端程序代碼會在建立 型別的實例時提供型別。 例如, List<T> 命名空間中的 System.Collections.Generic 類別是以一個類型參數定義。 用戶端程式碼會建立 List<string>List<int> 實例,以指定清單所持有的類型。 如需詳細資訊,請參閱 泛型

靜態類型

類別(但不是結構或記錄)可以宣告為 static。 靜態類別只能包含靜態成員,且無法使用 關鍵詞具現化 new 。 當程式載入時,類別的一個復本會載入記憶體中,而且會透過類別名稱存取其成員。 類別、結構及記錄可以包含靜態成員。 如需詳細資訊,請參閱 靜態類別和靜態類別成員

巢狀類型

類別、結構或記錄可以巢狀於另一個類別、結構或記錄內。 如需詳細資訊,請參閱 巢狀類型

部分類型

您可以在一個程式代碼檔案中定義類別、結構或方法的一部分,並在個別的程式代碼檔案中定義另一個部分。 如需詳細資訊,請參閱 部分類別和方法

物件初始化表達式

您可以將值指派給其屬性,以具現化和初始化類別或結構物件,以及物件的集合。 如需詳細資訊,請參閱 如何使用物件初始化器初始化物件

匿名類型

在不方便或不必要建立具名類別的情況下,您可以使用匿名型別。 具名數據成員會定義匿名類型。 如需詳細資訊,請參閱 匿名類型

擴充成員

您可以藉由建立個別類型來「擴充」類別,而不建立衍生類別。 該類型包含可以呼叫的方法,就像它們屬於原始類型一樣。 如需詳細資訊,請參閱 擴充方法

隱式類型區域變數

在類別或結構方法內,您可以使用隱含型別指示編譯程式在編譯時期判斷變數的類型。 如需詳細資訊,請參閱 var (C# 參考)。

記錄

您可以將 修飾詞新增 record 至類別或結構。 記錄是一種具有內建行為的類型,用於基於實值的相等比較。 記錄 ( record classrecord struct) 提供下列功能:

  • 使用不可變屬性建立參考型別的簡潔語法。
  • 重視平等。 如果記錄類型的兩個變數具有相同類型,而且如果每一個字段的值都相等,則這兩個記錄中的值都相等。 類別使用參考相等:如果類別類型的兩個變數參考相同的物件,則相等。
  • 非破壞性突變的簡潔語法。 with表達式可讓您建立新的記錄實例,該實例是現有實例的複本,但已變更指定的屬性值。
  • 內建的顯示格式設定。 方法 ToString 會列印記錄類型名稱和公用屬性的名稱和值。
  • 支援記錄類別中的繼承層次結構。 記錄類別支持繼承。 記錄結構不支持繼承。

如需詳細資訊,請參閱記錄

C# 語言規格

如需詳細資訊,請參閱<C# 語言規格>。 語言規格是 C# 語法和使用方式的最終來源。