婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > .net泛型通用函數的特殊問題的解決方法

.net泛型通用函數的特殊問題的解決方法

熱門標簽:玉林市機器人外呼系統哪家好 南陽外呼系統定制化 蘋果手機凱立德地圖標注 申請400電話手續 百度ai地圖標注 電話機器人軟件銷售工作 同安公安400電話怎么申請流程 合肥電銷外呼系統哪家公司做的好 預測式外呼系統使用說明

  自從2.0版本的net framework推出之后泛型(Generic)得到了廣泛好評。它不必像object類型一樣性能上因為“拆箱”或者“裝箱”得到損失,同時在編譯語法檢測階段就可以實時檢測出傳入或者傳出的類型是否符合特定條件。

  但“金無赤足,人無完人”——在我們享受這些幸福編程的同時,泛型自身類型的不確定也帶來了一個顯著的問題——無法進行運算符重載。譬如現在我要寫一個函數(一個通用的選擇排序算法,使用泛型T),該怎么辦呢?如果你簡單使用這樣的代碼(C#如下):

復制代碼 代碼如下:

//從小到大,改進型選擇排序算法

public static void SortT>(T[] array)
{
     bool flag = false; //標記是否已經排序

     for(int i=0;iarray.Length-1;++i)
     {
          flag = false;  //每次假定都已經排序,無須再排序

          for(int j=i+1;iarray.Length;++j)
          {
               if(array[i]>array[j])
                {
                      int temp = array[i];
                      array[i]=array[j];
                      array[j]=templ
                      flag = true; //已經排序
                }
          }
           if(!flag)
           {
               break;
           }
     }
}


  編譯之后很快發現提示“運算符‘>'無法作用于T”一類的提示。

  為什么呢?我們知道,凡是可以進行大于、小于比較的類型肯定都定義了運算符重載。一般類必須為此定義方可進行比較,不然大于號或者小于號(或者其它運算符)無法知道如何比較而發生錯誤。那么泛型因為事先都不知道什么類型?編譯器檢查器自然無法推斷你運行時動態傳入的這個類型一定保證是實現了運算符重載,嚴格語法檢查情況下就自然報錯。

  怎么辦呢?強制規定泛型T必須實現比較器(強制T必須實現IComparable,或者類似接口)。

復制代碼 代碼如下:

public static void SortT>(T[] array)where T:IComparable
{
     bool flag = false; //標記是否已經排序

     for(int i=0;iarray.Length-1;++i)
     {
          flag = false;  //每次假定都已經排序,無須再排序

          for(int j=i+1;iarray.Length;++j)
          {
               if(array[i].Compare(array[j])>0)
                {
                      int temp = array[i];
                      array[i]=array[j];
                      array[j]=templ
                      flag = true; //已經排序
                }
          }
           if(!flag)
           {
               break;
           }
     }
}


  一旦對泛型進行約束,那么泛型必然是實現該接口的類,必然擁有此方法(Compare方法返回結果int類型,如果大于0表示前面一個數字大于后面一個)。

  當然,微軟類庫中有一個Comparer靜態類,已經實現了此接口可以直接進行比較(http://msdn.microsoft.com/zh-cn/library/system.collections.comparer.comparer.aspx),因此我們也可以選擇直接使用這個靜態類中的Compare方法得到結果。

  【例2】實現一個通用的“+”——即如果傳入的字符串,則自動按照字符串進行字符拼接;如果傳入的是其它基本類型(int,double等),則返回相加結果。

  微軟沒有為“+”預定義接口,因此無法直接使用接口的方式來做(當然你自己強制定義一個,也可以如法炮制)。我們現在換一個方法——使用表達式樹(C#代碼如下):

復制代碼 代碼如下:

public static T AddT>(T a, T b)
        {
            Expression left = Expression.Constant(a);
            Expression right = Expression.Constant(b);

            Type t = typeof(T);

            Expression value;

            if (t == typeof(string))
            {
                value = Expression.Constant(a.ToString()+b.ToString());
            }
            else
            {
                value = Expression.Add(left, right);
            }

            ExpressionFuncT>> addExp = Expression.LambdaFuncT>>(value);

            FuncT> addFunc = addExp.Compile();

            return addFunc();
        }


  動態判斷T是string還是其它基本類型,然后調用不同的方法組合成為表達式樹,動態編譯成為一個Func表達式,返回結果即可。

您可能感興趣的文章:
  • asp.net實現利用反射,泛型,靜態方法快速獲取表單值到Model的方法
  • 詳解.NET 4.0中的泛型協變(covariant)和反變(contravariant)
  • .NET基礎之自定義泛型分析
  • .NET開發基礎:從簡單的例子理解泛型 分享
  • 使用.NET中的Action及Func泛型委托深入剖析
  • .NET CORE動態調用泛型方法詳解

標簽:揚州 南京 海南 南昌 嘉興 臺州 淄博 南京

巨人網絡通訊聲明:本文標題《.net泛型通用函數的特殊問題的解決方法》,本文關鍵詞  .net,泛型,通用,函數,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《.net泛型通用函數的特殊問題的解決方法》相關的同類信息!
  • 本頁收集關于.net泛型通用函數的特殊問題的解決方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美疯狂性受xxxxx喷水图片| 国产不卡视频在线观看| 日韩毛片高清在线播放| 欧美精彩视频一区二区三区| 国产日产欧美一区二区三区| 国产日韩欧美一区二区三区综合| 欧美变态tickling挠脚心| 精品日韩一区二区| 欧美精品一区二| 久久久久久麻豆| 国产欧美日韩精品a在线观看| 国产日产欧美一区二区三区 | 日韩成人免费电影| 日韩综合在线视频| 精品在线亚洲视频| 国产一区二区三区四区在线观看| 国产东北露脸精品视频| 懂色av一区二区三区免费看| 成人福利视频在线| 欧美性猛片xxxx免费看久爱| 欧美日韩国产免费| 欧美大胆一级视频| **性色生活片久久毛片| 亚洲成人免费视| 精品一区二区三区视频 | 亚洲视频免费看| 亚洲高清中文字幕| 韩国三级电影一区二区| 91麻豆产精品久久久久久| 欧美日本国产一区| 国产亚洲精品超碰| 亚洲成a天堂v人片| 国产激情偷乱视频一区二区三区| 91在线码无精品| 91精品国产一区二区| 国产日产精品1区| 日韩中文字幕亚洲一区二区va在线| 久久国产精品72免费观看| 99re热这里只有精品免费视频| 欧美日韩在线播放一区| 中文字幕不卡在线| 男女视频一区二区| 色婷婷久久综合| 26uuu精品一区二区| 亚洲午夜激情av| 成人一区二区三区在线观看| 日韩视频一区在线观看| 夜夜爽夜夜爽精品视频| 国产不卡高清在线观看视频| 91精选在线观看| 亚洲尤物视频在线| 成人免费视频一区| 久久欧美中文字幕| 毛片av中文字幕一区二区| 色狠狠桃花综合| 中文字幕av不卡| 久久99久久精品欧美| 在线亚洲人成电影网站色www| 国产日产精品一区| 国产一区二区美女诱惑| 91精品国产aⅴ一区二区| 亚洲日本在线天堂| 色婷婷亚洲综合| 亚洲欧美综合网| 成人黄色小视频在线观看| 精品蜜桃在线看| 精品一区二区三区免费毛片爱| 欧美精三区欧美精三区| 亚洲品质自拍视频| av在线播放不卡| 中文字幕国产一区二区| eeuss国产一区二区三区| 国产午夜久久久久| 国产精品综合在线视频| 久久久美女毛片| 高清国产一区二区三区| 国产亚洲综合色| 成人高清在线视频| 国产精品不卡在线| 色狠狠色噜噜噜综合网| 一区二区三区日韩精品| 欧美在线观看视频在线| 亚洲3atv精品一区二区三区| 欧美高清dvd| 久久福利视频一区二区| 久久久777精品电影网影网| 成人少妇影院yyyy| 一区二区成人在线| 日韩视频一区二区在线观看| 国产一区二区三区精品视频| 欧美激情中文不卡| 色哦色哦哦色天天综合| 日韩国产高清影视| 久久久精品免费观看| 91网站最新网址| 三级久久三级久久久| 欧美成人三级在线| 成人99免费视频| 亚洲二区在线视频| 久久一日本道色综合| 97国产一区二区| 久久国产精品色婷婷| 中文字幕一区二区三区精华液| 欧美亚洲自拍偷拍| 美女国产一区二区| 一区二区中文字幕在线| 91精品欧美福利在线观看| 国产成人精品三级| 亚洲成人免费在线观看| 欧美激情一区二区三区不卡| 日本精品视频一区二区三区| 精品午夜久久福利影院| 亚洲美女在线国产| 26uuu久久天堂性欧美| 欧美午夜不卡在线观看免费| 狠狠网亚洲精品| 天堂成人免费av电影一区| 久久久久久久性| 欧美一区二区三级| 91视频国产观看| 豆国产96在线|亚洲| 五月天亚洲精品| 亚洲美女区一区| 国产精品天美传媒| 精品欧美一区二区三区精品久久| 日本韩国欧美三级| 成人一级视频在线观看| 国产最新精品精品你懂的| 午夜精品久久久久久久蜜桃app| 国产亚洲一区二区三区在线观看| 91精品在线免费观看| 色综合天天综合网国产成人综合天| 国产乱国产乱300精品| 日本视频一区二区| 亚洲丰满少妇videoshd| 亚洲综合成人网| 亚洲丝袜另类动漫二区| 国产精品超碰97尤物18| 国产精品欧美一区二区三区| 337p日本欧洲亚洲大胆精品| 欧美成人三级电影在线| 日韩免费视频一区二区| 欧美成人aa大片| 日韩限制级电影在线观看| 日韩亚洲欧美综合| 91精品国产手机| 在线成人免费观看| 91精品在线一区二区| 日韩区在线观看| 久久婷婷久久一区二区三区| 精品88久久久久88久久久| 日韩欧美一卡二卡| 久久久久久免费| 国产精品免费免费| 中文字幕一区二区三区蜜月| 亚洲美女精品一区| 亚洲妇女屁股眼交7| 日韩二区三区四区| 精品一区二区三区视频在线观看| 寂寞少妇一区二区三区| 国产精品自拍网站| 成人午夜激情在线| 91九色02白丝porn| 欧美精品在线一区二区| 日韩视频在线永久播放| 久久久久久久久久久电影| 国产精品免费丝袜| 亚洲国产精品久久一线不卡| 美女国产一区二区| 成人动漫一区二区在线| 欧美午夜精品久久久久久孕妇 | 国产成人一级电影| av一区二区三区在线| 欧美精品v国产精品v日韩精品| 日韩精品一区二区三区视频播放| 国产调教视频一区| 一区二区成人在线视频| 精品一区二区三区在线播放视频 | 国产麻豆精品95视频| 成人夜色视频网站在线观看| 欧美性受xxxx| 久久网站最新地址| 亚洲一区二区成人在线观看| 国产一区二区0| 欧美日韩一级二级三级| 国产日韩一级二级三级| 天天射综合影视| 成人h动漫精品一区二| 制服丝袜av成人在线看| 亚洲欧洲日本在线| 国内精品免费在线观看| 欧美无砖专区一中文字| 久久精品欧美日韩精品 | 成人午夜伦理影院| 7777精品久久久大香线蕉| 中文字幕国产一区| 久久99久久久欧美国产| 欧美日韩在线播放一区| 综合欧美亚洲日本| 国产一区二区久久|