最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#用Lambda和委托實現(xiàn)模板方法

 更新時間:2013年03月18日 20:21:04   作者:  
C#用Lambda和委托實現(xiàn)模板方法,需要的朋友可以參考一下

1 問題描述
查看下面這段代碼:

復(fù)制代碼 代碼如下:

int[] a = [1,2,3];

for (int i =0; i<a.length; i++)
  {
    a[i] = a[i] * 2;
  }

for (int i =0; i<a.length; i++)
  {
    Console.WriteLine(a[i]);
  }

很明顯,上述代碼中存在for循環(huán)的重復(fù)代碼。

2 解決方案
如何消除重復(fù)?使用委托。

•定義委托

復(fù)制代碼 代碼如下:

delegate int mapfun(int x);//以替換上述代碼中不同的部分

•模板方法

復(fù)制代碼 代碼如下:

//只負(fù)責(zé)遍歷
void map(mapfun fn, int[] a)
{
  for (int i = 0; i < a.Length; ++i)
    {
      a[i] = fn(a[i]);
    }
}

•客戶端代碼

復(fù)制代碼 代碼如下:

int[] a = {1, 2, 3};
map(delegate(int x) { return x * 2; }, a);  //.Net 2.0支持委托匿名方法
map(x => { Console.WriteLine(x); return x; }, a); //.Net 3.0開始支持lambda表達(dá)式

3 完整代碼示例

復(fù)制代碼 代碼如下:

class Program
{
  static void Main(string[] args)
  {
    int[] a = {1, 2, 3};
    map(delegate(int x) { return x * 2; }, a);  //.Net 2.0支持委托匿名方法
    map(x => { Console.WriteLine(x); return x; }, a); //.Net 3.0開始支持lambda表達(dá)式
  }

  delegate int mapfun(int x);
  static void map(mapfun fn, int[] a)
  {
    for (int i = 0; i < a.Length; ++i)
      {
        a[i] = fn(a[i]);
      }
  }
}

4 與傳統(tǒng)模板方法的比較
1.減少了子類數(shù)量,模板方法中,拓展一套算法就需要一個子類。
2.模板將算法隱藏,委托交由客戶代碼去選擇。

相關(guān)文章

  • C#帶你玩掃雷(附源碼)

    C#帶你玩掃雷(附源碼)

    這篇文章主要介紹了C#帶你玩掃雷(附源碼),詳細(xì)的介紹實現(xiàn)掃雷的方法,具體一定的參考價值,有興趣的可以了解一下
    2017-10-10
  • C#調(diào)用python.exe使用arcpy方式

    C#調(diào)用python.exe使用arcpy方式

    這篇文章主要介紹了C#調(diào)用python.exe使用arcpy方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 解讀赫夫曼樹編碼的問題

    解讀赫夫曼樹編碼的問題

    本篇文章對赫夫曼樹編碼的問題進行了分析說明,需要的朋友參考下
    2013-05-05
  • C#解決Excel邊框樣式無法復(fù)制及格式刷功能

    C#解決Excel邊框樣式無法復(fù)制及格式刷功能

    在運行數(shù)據(jù)表數(shù)據(jù)導(dǎo)出到 EXCEL 數(shù)據(jù)輸出時遇到了一個問題,開發(fā)者設(shè)計了單行細(xì)線下邊框的輸出模板,但是邊框的樣式無法復(fù)制,所以本文給大家介紹了C#解決Excel邊框樣式無法復(fù)制及格式刷功能,需要的朋友可以參考下
    2024-09-09
  • C#如何給word文檔添加水印

    C#如何給word文檔添加水印

    這篇文章主要為大家詳細(xì)介紹了C#如何給word文檔添加水印的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#使用非托管代碼直接修改字符串的方法

    C#使用非托管代碼直接修改字符串的方法

    在string方法中,如ToUpper等字符串操作方法,都會產(chǎn)生一個新的字符串,這樣增大了運行開支。一個替代方案是通過非托管代碼直接操作字符串。如替代ToUpper方法:
    2013-07-07
  • C#實現(xiàn)FTP客戶端的案例

    C#實現(xiàn)FTP客戶端的案例

    這篇文章主要為大家詳細(xì)介紹了C#實現(xiàn)FTP客戶端的小案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C#使用偽隨機數(shù)實現(xiàn)加密用戶密碼的方法

    C#使用偽隨機數(shù)實現(xiàn)加密用戶密碼的方法

    這篇文章主要介紹了C#使用偽隨機數(shù)實現(xiàn)加密用戶密碼的方法,對于開發(fā)C#會員系統(tǒng)或者程序安全問題都有一定的參考借鑒價值,需要的朋友可以參考下
    2014-07-07
  • C#判斷頁面中的多個文本框輸入值是否有重復(fù)的實現(xiàn)方法

    C#判斷頁面中的多個文本框輸入值是否有重復(fù)的實現(xiàn)方法

    這篇文章主要介紹了C#判斷頁面中的多個文本框輸入值是否有重復(fù)的實現(xiàn)方法,是一個非常簡單實用的技巧,需要的朋友可以參考下
    2014-10-10
  • C#中StringBuilder類的使用總結(jié)

    C#中StringBuilder類的使用總結(jié)

    本篇文章主要是對C#中StringBuilder類的使用方法進行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01

最新評論

湖北省| 舒城县| 锡林郭勒盟| 太仆寺旗| 无锡市| 禹城市| 榆社县| 秦安县| 宁津县| 大竹县| 永年县| 通辽市| 紫金县| 镇安县| 莫力| 梁河县| 新河县| 镇巴县| 徐闻县| 阿合奇县| 昭苏县| 休宁县| 松潘县| 平武县| 日土县| 平乐县| 从化市| 茂名市| 瓦房店市| 阿拉善左旗| 石首市| 漾濞| 永州市| 安远县| 南陵县| 无为县| 涞水县| 台北县| 澜沧| 忻州市| 方山县|