c#學習筆記Day3
第三章
1.只讀欄位
Readonly關鍵字比const靈活的多,允許把一個欄位設定為常量,但還需執行一些計算,已確定他的初始值。其規則是可以在建構函式中給只讀欄位賦值,但不能在其他地方賦值。只讀欄位還可以是一個例項欄位,而不是靜態欄位,類的每個例項可以有不同的值。如果把只讀欄位設定為static,則必須顯示宣告他。
只讀欄位:用readonly修飾符宣告的欄位為只讀欄位,只讀欄位可以是例項欄位或靜態欄位,它只能在欄位宣告中或建構函式中重新賦值,在其它任何地方都不能改變只讀欄位的值。
常量:用const修飾符宣告的欄位為常量,常量只能在宣告中初始化,以後不能再修改。
靜態建構函式:一個類只能有一個靜態建構函式,靜態建構函式前面必須是static,最多隻執行一次,不可以被繼承。靜態建構函式用於初始化任何靜態資料,或用於執行僅需執行一次的特定操作。在建立第一個例項或引用任何靜態成員之前,將自動呼叫靜態建構函式。
2.部分類
Partial關鍵字允許把類、結構、方法或介面放在多個檔案中。
3.靜態類
如果類只包含靜態的方法和屬性,該類就是靜態類。靜態類功能上和使用私有靜態建構函式建立的類相同。不能建立靜態類的例項。使用static關鍵字,編譯器可以檢查使用者是否不經意間給該類添加了例項成員,如果是,就發生一個編譯錯誤。靜態類語法如下:
static class StaticUtilities { public static void HelperMethod() { } }
呼叫方法:StaticUtilities.HelperMethod();
4.Object類
所有的.NET類都派生自system.Object。其實際意義在於,除了自己定義的方法和屬性外,還可以訪問為Object定義的許多共有的和受保護的成員方法。
System.Object()方法:
- ToString()方法:
- GetHashCode()方法:
- Equals()(兩個版本)和ReferenceEquals()方法:
- Finalize()方法:
- GetType()方法:
- MemberwiseClone()方法:
5.擴充套件方法
有許多擴充套件類的方式。如果有類的原始碼,繼承就是給物件新增功能的好方法。如果沒有原始碼,則可以使用擴充套件方法,它允許改變一個類,但不需要該類的原始碼。
擴充套件方法是靜態方法,他是類的一部分,但是沒有放在類的原始碼中。例如一個Money類需要新增一個方法AddToAmount(Decimal amountToAdd),但是 ,由於某種原因原始碼不能修改,此時必須建立一個靜態類,把方法AddToAmount()新增為靜態方法。
Public static class MoneyExtension
{
Public static void AddToAmount(this Money money,decimal amountToAdd)
{
//ToDo Sth
}
}
注意這個方法的引數,第一個引數是要擴充套件的型別,他放在this關鍵字的後面,告訴編譯器,這個方法是Money型別的一部分。
另外呼叫的時候:
Money money=New Money();
money.AddToAmount(10M);
即使這個擴充套件方法是靜態的,也要使用標準的例項方法語法。如果擴充套件方法與類中的某個方法名相同,則就從不會呼叫這個擴充套件方法。