C#2.0經典讀書筆記 )

來源:互聯網
上載者:User


第一部分:C#入門

1,可以為類或者命名空間指定別名
例如(命名空間別名):using myAlias = myNameSpace1.myNameSpace2.Space3

2, C#的另外幾種開發工具:SharpDevelop / Snippet Compiler
     C#返編譯軟體:.NET Reflector
     C#單元測試工具:NUnit
     C#代碼產生工具:CodeSmith
     C#代碼標準偵查工具:FxCop

3, 編程風格建議
     A,代碼塊之間空一行
     B,左大括弧佔一行
     C,括弧的嵌套層次要縮排(4個空格)
     D,變數命名規則(就是名首字母小字,後面出現單詞的首字母大寫,如myData)

4, C#的四種數實值型別不被.net平台上其他語言支援,這四種數實值型別是(Sbyte,ushort,uint,ulong)

5, 資料類型顯式轉換的兩種方式:
     A,System.Convert 類提供多種類型的資料相互轉換
     B,括弧形式,如(int)

6,C#中全域變數的解決方案
     用靜態類和靜態變數來實現,如:private static string name = "wang";

7, a++ 和 ++a的區別
     a++ 先參與運算再自加 ++a 先自加再參與運算

8,^運算子號
     用在兩個bool型運算中表示異或(只有一個運算元為 true 時,其結果才為 true)
     用在兩個int型運算中表示二進位按位異或(5^6 = 101^110=011(3))

9, C#語言中資料類型檢測
     檢測資料類型:int a=5; a is int    返回true
     檢測類型的容量:sizeof(int);

10,C#中邏輯運算子
     “&”表示“與”,兩者都為真結果才為真
     “&&”表示“與”,與&不同的是它僅在必要時才計算第二個運算元
     “|”表示“或”,兩者中有一方為真結果就為真
     “||”表示“或”,與|不同的是它僅在必要時才計算第二個運算元
     “^”表示“異或”,兩者中只有一方為真結果才為真
     “!”表示“非”,參與變數取反

11,switch語句中的Case部分的內容為空白時,直接執行Case的下一個Case中的內容

12,switch語句支援對枚舉型的分支處理

13,三元運算子代替簡單的if else 語句 
      例如:
      if (a>b)
      {c=a-b }
      else {c=a+b} 寫為 c = a>b?a-b:a+b

14,四種迴圈語句
     A:for(){} 執行次數已知,可正向步進,逆向步進,步長不一定為1
     B:foreach(){} 對集合實體進行遍曆操作
     C: while(){};執行0次或0次以上,在迴圈體中改變迴圈判斷條件
     D: do{} while(); 至少執行一次,在迴圈體中改變迴圈判斷條件

15,改變迴圈體執行的4種關鍵字:
     A:goto 從迴圈體中跳到標籤位置,不建議從迴圈體外跳向迴圈體內
     B: return 跳出當前過程,而不是迴圈體
     C:break 跳出當前迴圈體(跳到當前迴圈體外聞)
     D:continue 跳過當前迴圈體中的當次迴圈,進入下一次迴圈

16,關於冒泡排序演算法的一個經典例子

static void Main(string[] args)
          {

              int[] myArray = new int[5] { 12,9,35,68,51};
              int a = 0;

              for (int i = 0; i < myArray.Length; i++)
              {
                  Console.WriteLine(myArray[i]);
              }
              Console.ReadLine();

    //外層迴圈用來控制內層迴圈終值,因為每運行一次數組中的最大數會推動到數組最後
              for (int i = myArray.Length - 1; i >= 0; i--)
              {
                  for (int j = 0; j < i; j++) //內層迴圈用來比較相臨兩數,把大數向後推動
                  {
                      if (myArray[j] > myArray[j + 1])
                      {
                          a = myArray[j];
                          myArray[j] = myArray[j + 1];
                            myArray[j + 1] = a;
                      }
                  }
              }

              for (int i = 0; i < myArray.Length; i++)
              {
                  Console.WriteLine(myArray[i]);
              }
              Console.ReadLine();

}

17,方法中的return意思是把控制權交給方法調用者,在方法上面一行使用///注釋可以自動產生關於方法的說明
,調用者使用此方法時,VS2005會顯示出這些注釋(智能提示功能)。

18,方法中傳入參數中ref的用法(使參數按引用傳遞,ref參數必須初始化)

19,方法中傳入參數中out的用法同ref,不同之處是out的傳入參數不用初始化

20,方法重載的三種形式
     A:參數個數不同
     B:參數類型不同 
     C:參數類型相同,但參數引用和非引用 也是重載(比如:static int add(ref int a,ref int b) 
和 static int add(int a, int b))

21,System.Environment 此類擷取當前運行環境下的很多資訊.

------------------------------------------------------------------------------------
第二部分 C#提高

1,VS2005中類設計圖的使用(ClassDiagram)用圖形介面設計類,能自動產生類代碼

2,類的構成(類的成員): 
     A:建構函式(可重載)
     B:解構函式(一個類只能有一個解構函式,並且不能被調用),當程度封閉視窗,檔案,網路連接這類非託管
資源

的時候,應當使用解構函式來釋放這些資源。
     C:欄位(在類內部使用)
     D:屬性,(用來擷取,修改類中欄位的值,用get set實現,get set)
     E:方法。

3,類成員的存取控制修飾符(private(預設) public protected internal)
     其中,protected 只能在類內部訪問和被它的衍生類別中訪問,介於private 和 public 之間
     internal是類型和類型成員的存取修飾詞,用來限制類成員,以便只有在當前命名空間或程度集中的類可以訪問它

4,枚舉類型是輕量級的實值型別,用enum來聲明,枚舉用來表達一組特定值的集合行為,如windows表單的可選狀態等

5, 結構用struct來聲明,結構與類的區別:
     A:結構是實值型別,在堆棧上分配地址。缺點是資源有限,不適合處理大的邏輯複雜物件,結構不支援繼承,但可

以實現介面。
     B:類是參考型別,在堆上分配地址。
     C:結構執行效率要比類高,但只適合小對象
   
6,注意多維陣列和交錯數組(數組的數組/鋸齒數組)的區別。
    多維陣列:int[,] intArray = new int[2,2]{{10,11},{12,13}}
    交錯數組(元素為數組的數組,維度和大小可以不同):寫法如下
    int[][] intArray = new int[3]
    int[0] = new int[]{10,20};
    int[1] = new int[]{15,30,33};
    int[2] = new int[]{15,22,25,29,65};
    或者:
    int[][] intArray = new int[][] 
    {
      new int[] {10,20},
      new int[] {15,30,33},
      new int[] {15,22,25,29,65}
    }

7, A:數組的遍曆foreach,
     B:數組的清除System.Array(myArray,index,length),
     C:數組的尋找Array.IndexOf(myArray, Object) 和4個參數的進階尋找縮小尋找範圍
     D:數組的排序Array.Sort(myArray) 順序排序 / Array.Reverse(myArray) 注意此為反轉數組並不是倒

8, ArrayList ,同數組最大的區別是arrayList的容量是自動擴充的,
     注意arraylist.capacity 顯示容量,arraylist.count顯示元素個數。
     兩種增加元素的方式ADD,insert
     三種刪除元素的方式clear,Remove,RemoveAt
     ArrayList向Array的轉換
     myArrayList.TrimToSize(),縮小capacity到當前實際容量,減少記憶體浪費.
   
9, HashTable 索引值對集合的字典,不能通過其index來訪問,只能通過key來訪問表中值,也就是hashTable[key]
 
 
 
 作者: 58.33.87.*  2007-5-18 13:53   回複此發言   
 
--------------------------------------------------------------------------------
 
3 C#2.0經典讀書筆記(第一二部分:C#入門和提高) 
      增加元素方式:add(key,value)
     刪除元素方式: clear() / remove(key)
     遍曆:foreach (DictionaryEntry d in h1)
     尋找: HashTable.Contains / HashTable.ContainsKey 是否包含指定key的項
           HashTable.ContainsValue 是否包含指定value的項

10,Queue 隊列類是先進先出集合
     Queue的三個主要操作
     Enqueue 將一個元素增加到Queue的尾部
     Dequeue 從Queue的開始處取出最舊元素並移除此元素
     Peek 從Queue處返回最舊元素但不刪除

11,Stock 堆棧類是後進先出集合
     Stock的三個主要操作
     Push 在Stock的頂部加入元素
     Pop 從Stock頂部取出最新元素並移除此元素
     Peek 從Stock頂部返回最新元素但不刪除

12,SortedList 是ArrayList 和 HashTable的結合體 ,當同時需要索引值對和順序索引時,使用SortedList

13,Dictionary字典類(泛型類)

14,Interface 介面(介面只定義有哪些功能,但不實現功能)
     實現介面的成員不允許是靜態,非公用的
     C#不允許類的多重繼承,允許一個類同時繼承類和介面
     介面可以做為參數傳遞到方法中。介面可以做為傳回值
     介面的實現分一般實現和顯式實現。顯式實現是為瞭解決如下問題:如果一個類繼承了兩個介面。兩個介面有一個相
同名稱的方法名,那麼出現名稱衝突,使用顯式介面可以解決這一問題.

15,abstract 抽象類別 (抽象類別類似介面,但允許方法的具體實現,是介面和普通類的結合體)
     抽象類別中可以定義抽象方法,但抽象(屬性)不能具體實現,
     抽象類別的衍生類別必須實現所有抽象成員。(用override來實現抽象成員)

16,sealed 密封類 
     密封類用來限制別的類從它繼承,不建議使用,除不能繼承外同普通類使用方法相同,用於:在類中包含有敏
感性資訊時可以考慮使用密封類.

17,進階轉換
     A: is 用來檢查對象是否與指定類型相容
     B:() 用來強制進行類型轉換
     C:as用於在相容類型間轉換(與強制轉換相比,它在轉換失敗時不會引發異常)

18,virtual 和 override 
     Virtual用於修飾方法,屬性,索引器,事件聲明。要擴充或修改繼承的方法,屬性,索引器,事件聲
明的抽象實現或虛實現,必須使用override修飾符

19,類成員中的屬性和欄位:
      屬性是對外部的,定義為public protected ,欄位是類內部的,只能private,體現類的封裝性

20,迭代器(.net2.0新知識)通過迭代器可以實現對類中資料結構的遍曆,定義方法如下
     public System.Collections.IEnumerator GetEnumerator(){}

21,部分類別(.net2.0新知識)可以將類,結構,介面的定義分拆到多個源檔案中,每個源檔案包含類的一部分,分
部類用partial定義.如windows表單應用程式中form1.cs 和 form1.designer.cs 就是兩個檔案中使用了分部
類.
     使用部分類別的注意事項:
     A:單一類不要使用部分類別定義關鍵字:partial, .net會去尋找另外一部分,增加系統負擔
     B: 各部分類別的可訪問性應一致
     C:各部分類別應都使用partial關鍵字來定義
     D: 各部分類別繼承了不同的類和介面時,.net 會很好的將其結合起來
     E: partial關鍵字應出現在class,interface,struct 之前一位置。

22,索引器 :為類提供與數組相似的方式進行索引,跟屬性相似。索引器也可以用在結構和介面中,如果在介面
中定義了空索引器,實現該介面的類必須實現它的介面的索引器.

23, 泛型(.net2.0新知識)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.