1. 程式人生 > >c#學習筆記Day3

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()方法:

  1. ToString()方法:
  2. GetHashCode()方法:
  3. Equals()(兩個版本)和ReferenceEquals()方法:
  4. Finalize()方法:
  5. GetType()方法:
  6. 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);

        即使這個擴充套件方法是靜態的,也要使用標準的例項方法語法。如果擴充套件方法與類中的某個方法名相同,則就從不會呼叫這個擴充套件方法。