国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:17:45
字體:
來源:轉載
供稿:網友

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;可是這樣子對于需要根據情況進行判斷是有值還是為空的時候,就需要寫兩行代碼來完成,很羅嗦,麻煩,有了nullable types就方便了
    int? x = null;
    int y = 10;
    if (chk.checked == true)
    {
       x = y;
    }
    else
    {
       x = null;
    }
    ***.value = x;

6. :: operator ::操作符
   很有意思的一個東西,其中引入了global關鍵字,看看就可以了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 应用必备| 信阳市| 错那县| 京山县| 深州市| 特克斯县| 永吉县| 山东省| 弋阳县| 两当县| 南昌县| 乌鲁木齐县| 阳东县| 林西县| 荥经县| 昌平区| 盐城市| 剑川县| 营山县| 澜沧| 深水埗区| 德格县| 武宁县| 隆安县| 景泰县| 枣强县| 东台市| 莒南县| 石屏县| 高碑店市| 中宁县| 和顺县| 右玉县| 乃东县| 江油市| 邢台县| 义乌市| 郁南县| 苏州市| 逊克县| 泸溪县|