程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> what is new in c sharp 2.0--study from msdn

what is new in c sharp 2.0--study from msdn

編輯:.NET實例教程
http://www.microsoft.com/china/msdn/library/langtool/vcsharp/vbconcprogramminglanguagefuturefeatures.mspx
1. Generic Type 泛型
  定義一個MyList<T>,對這個MyList類設定方法,方法中,使用T而不是具體的類型float或者int什麼的,忽略了類型的區別
 MyList<MyClass> list1  = new MyList<MyClass>();
 MyList<float> list2 = new MyList<float>();
 MyList<SomeStruct> list3 = new MyList<SomeStruct>();
  可以使用在Class、Struct和Interface
  可以在模板的定義中,具體的定義T屬於的類型,
 where T : struct   T是value type
 where T : class   T是reference type
 where T : new()   T具有一個無參數的構造函數
 where T : <base class name>  T必須是base class name設定的類或者是他的繼承類
 where T : <interface name>  T必須是interface name設定的接口或者它的實現類
  我的疑問是,這個Generic Type的意義何在?如果說忽略了類型,可是,如果沒有類型設定,那麼T就是object,只能夠調用很少的一些方法,如果設定了類型,那麼為什麼我不直接寫呢?何必還要繞一個圈子呢?
  我的回答是,
      第一,對於List<>這樣的泛型,如果不使用泛型,要達到目的,就要使用一個array或者是list,如果是array,那麼長度就是限定的,不是動態的,這不好,如果是list,那麼類型是不知道的,需要在程序中進行編碼進行轉換,所以,使用了泛型,對麼?
      第二,還是保證了一種類型上面的忽略,算法的統一

2. Interator 迭代
  Interator是一個方法,允許foreach在類上進行操作,Iterator代碼定義了foreach循環遍歷集合中的元素時的返回類型。
  避免了如果一個collection要支持foreach循環必須實現System.Collections.IEnumerable或者System.Collections.IEnumerator
  yield return, 返回值必須是System.Collections.IEnumerable或者System.Collections.IEnumerator

3. Anonymous Method 匿名方法
   btnOK.Click += delegate{MessageBox.Show("OK")}
   btnOK.Click += new EventHandler(object sender, EventArgs e)
   {
 MessageBox.Show(sender.ToString());
   }
  有點把一段代碼作為參數傳遞給delegate
  這可就方便了在RunTime設定運行代碼,外部腳本,注入啊,reject

4. Partial Class 局部類
   一個類,可以在一個assembly或者module(exe/dll)的各個cs文件中被不斷的補充、定義,這很方便於多個開發員的開發,對於一個存在於幾個人寫的類中,Partial class還是很有用的,每個人都可以根據自己的需求對Partial Class進行補充擴展
   需要注意的是,第一,只能夠在一個assembly或者module中;第二,不能夠聲明的方式不統一

5. Nullable Types 空類型
   聲明的方式可以是
    int? x;
    System.Nullable x;
   很有用,例如,對於Db中的一個fIEld如果要賦值為空,現在的寫法可能是***.Value = null;可是這樣子對於需要根據情況進行判斷是有值還是為空的時候,就需要寫兩行代碼來完成,很羅嗦,麻煩,
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved