class(類別)可以說是物件導向程式語言的核心,透過類別將資料、函式等內容包裝在成一個物件,並在封裝時透過存取修飾詞,達到資訊隱藏的目的。相對於C++與Java,C#的class有提供一些比較有趣的功能,例如:property。
欄位(field)是最常見的資料成員,可以儲存物件的資料,並可以透過static、readonly、const修飾詞達到不同的功用。例如欄位設定成static會讓資料達到全域變數的效果。設定成readonly或const可以成為常數(constant)達到不可更改的效果。const為編譯成IL後值不能更改的常數,readonly是CLR執行後值不可以更改的常數。事件(event)有一點特別,今天就依照書本上歸類為資料成員。
在物件導向程式語言中函式(function)又被稱呼為方法(method),這稱呼起源於Smalltalk。在C#中方法(method)是函式成員的一種,另外還有不同情況對應執行的函式,如內容函式(property)是偽裝成欄位的函式、索引函式(indexer)是偽裝成陣列的函式、建構函式(constructor)是物件初始化實例化時執行的函式、解構函式(destructor)是物件清除時執行的函式、運算函式(operator)是作為類別進行四則運算或是轉型運算執行的函式,先前文章實作轉型運算時我們稱呼為轉型運算子,但在我們實作operator時可以發現本質上是在撰寫一個函式。
型別成員指的是可以在類別中包入類別或結構,也可以包入類別本身形成巢狀類別。
modifier的中文翻譯有好幾種,修飾子、修飾詞、修飾字、修飾元等等,這邊就用存取修飾詞這個名稱,運用存取修飾詞可以幫我們的類別與類別成員進行封裝,限制他人能不能存取、能不能使用、能不能看見,來達到資訊隱藏的目的。以下為四種等級的存取修飾詞
權限由最開放到最小,例如:不能繼承internal類別後,將被繼承類別public給外部使用等。這些存取修飾詞的使用錯誤C#編譯器都會提示我們。