一 類的概述(類是邏輯相關的資料和函式的封裝,通常代表真實世界中或概念上的事物)
類是一種能存盤資料并執行代碼的資料結構,包含資料成員和函式成員,
資料成員存盤類或類的實體相關的資料;
函式成員執行代碼,
二 宣告類
class MyClass
{
資料成員...(欄位、常量)
函式成員...(方法、屬性、建構式、解構式、事件、索引器、運算子)
int MyField; //欄位
static StaticField; //靜態欄位
void ShowMyField() //方法
{
Console.WriteLine(MyField);
}
static void ShowMyStaticFeld() //靜態方法
{
Console.WriteLine(StaticField);
}
}
欄位是隸屬于類的變數,可以是任何型別,用來保存資料;
方法是具有名稱的可執行代碼塊;
三 創建變數和類的實體

四 為資料分配記憶體
宣告某型別變數所分配的記憶體是用來保存參考的,而不是用來保存類物件的實際資料,
要為實際資料分配記憶體,需要使用new運算子,

五 訪問修飾符
在類的內部,任何函式成員都可以使用成員的名稱訪問類中的任意成員,
類的成員有5種訪問控制:
- 私有的private:默認訪問級別,只能從宣告它的內部訪問,其他的類不能看見或訪問,
- 公有的public:可以被程式中的其他類訪問,
- 受保護的protected:
- 內部的internal:
- 受保護內部的protected internal:
六 靜態欄位
靜態欄位被類的所有實體共享,所有實體都訪問同一記憶體位置,
即使類沒有實體,也存在靜態成員,并且可以訪問,
var field = MyClass.StaticField; //訪問靜態欄位

七 靜態函式成員
如同靜態欄位,靜態函式成員獨立于任何類的實體,即使沒有類的實體,也可呼叫靜態函式,
靜態函式成員不能訪問實體成員,但可以訪問其他靜態成員,
MyClass.ShowMyStaticFeld();
八 常量成員
常量成員宣告在類中,
用于初始化常量成員的值在編譯時必須是可計算的,且常為一個預定義簡單型別或由其組成的運算式,
class MyClass
{
const int IntVal = 100;
}
九 常量和靜態量
常量和靜態量不同,常量沒有自己的存盤位置,而是在編譯時被編譯器替換,這種方式類似于C++中的#define,

十 屬性
屬性和欄位不同,屬性是一個函式成員:
- 它不為資料存盤分配記憶體;
- 它執行代碼;
屬性是一組兩個匹配的稱為訪問器的方法:
- set訪問器為屬性賦值;它擁有一個單獨的、隱式的值參,名稱為value,與屬性的型別相同;它的回傳型別為void,
- get訪問器從屬性獲取值;它沒有引數,擁有一個與屬性型別相同的回傳型別,
只有get訪問器的屬性為只讀屬性;只有set訪問器的屬性為只寫屬性,
屬性也可以宣告為static,
class MyClass
{
private int myVar; //屬性訪問器常使用欄位作為存盤;
public int MyVar
{
get { return myVar; }
set { myVar = value; }
}
private int myVar1; //屬性訪問器中可執行計算
public int MyVar1
{
get { return myVar1 + 1; }
set { if (value > 0) myVar1 = value; }
}
}
class Program
{
static void Main()
{
var myClass = new MyClass();
var p = myClass.MyVar; //隱式呼叫get方法
myClass.MyVar= 10; //隱式呼叫set方法
var myClass2 = new MyClass() { MyVar = 10, MyVar1 = 100 }; //物件初始化陳述句
}
}
十一 實體建構式 constructor
實體建構式是一個特殊的方法,它在創建類的每個實體時執行,
- 建構式用于初始化類實體的狀態;
- 建構式的名稱和類名相同;
- 建構式不能有回傳值;
- 建構式可以帶引數;
- 建構式可以被多載overload;
- 如果沒有顯示地定義建構式,那么編譯器會定義一個隱式的默認建構式,它沒有引數,方法體為空;
- 如果顯示地定義了建構式,那么編譯器就不會定義一個隱式的默認建構式;
十二 靜態建構式
建構式可以宣告為static,靜態建構式初始化類級別的項,
- 初始化類級別的項,在參考任何靜態成員之前,在創建類的任何實體之前;
- 靜態建構式不能有回傳值;不能帶引數;
- 類只能有一個靜態建構式,且不能帶引數;
- 靜態建構式不能有訪問修飾符,
十三 解構式 destructor
解構式執行在類的實體被銷毀之前需要的清理或釋放非托管資源的行為,
十四 this關鍵字
this關鍵字在類中使用,是對當前實體的參考,
十五 readonly修飾符
欄位可以用readonly修飾符修飾,作用類似于將欄位宣告為const,一旦值設定就不能改變,
- const欄位只能在宣告時初始化;
- readonly欄位可以在宣告時初始化,也可以在建構式中初始化;
- const的行為總是靜態的,它在記憶體中沒有存盤位置
- readonly可以是實體欄位也可是靜態欄位,它在記憶體中有存盤位置;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440504.html
標籤:.NET技术
上一篇:C#-4 方法
下一篇:C#-4 方法
