夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          /*
           * 由 SharpDevelop 創(chuàng)建。
           * 用戶: huy
           * 日期: 2010-3-6
           * 時(shí)間: 23:30
          */


          using System;
          using System.Threading;
          delegate void EatDelegate(string food);
          class MyDelegate
          {
              
          static void zsEat(string food)
              
          {
                  Console.WriteLine(
          "張三"+food);
              }

              
              
          static void Main()
              
          {
                  EatDelegate zs 
          = new EatDelegate(zsEat);
                  zs(
          "西瓜");
                  Thread.Sleep(
          5000);
              }

          }



          當(dāng)我們需要把方法做為參數(shù)傳遞給其他方法的時(shí)候,就需要使用委托。

          因?yàn)橛袝r(shí)候,我們要操作的對象,不是針對數(shù)據(jù)進(jìn)行的,而是針對某個(gè)方法進(jìn)行的操作。

                 我們還是來以代碼入手

           

          Code
          using System;
          namespace gosoa.com.cn
          {
              public class test
              {
                  public delegate string GetAString();
                  public static void Main()
                  {
                      int x=10;
                      GetAString firstString=new GetAString(x.ToString);
                      Console.WriteLine(firstString());
                      //上句和下面這句類似。
                      //Console.WriteLine(x.ToString());
                  }
              }
          }

          在上例中,public delegate string GetAString(); 就是聲明了一個(gè)委托(delegate),其語法和方法的定義類似,只是沒有方法體,前面要加上關(guān)鍵字 delegate 。定義一個(gè)委托,基本上是定義一個(gè)新類,所以,可以在任何定義類的地方,定義委托。

          注意,在C#中,委托總是自帶一個(gè)有參數(shù)的構(gòu)造函數(shù),這就是為什么在上例中,GetAString firstString=new GetAString(x.ToString); 通過這句初始化一個(gè)新的delegate的時(shí)候,給傳遞了一個(gè)x.ToString 方法。但,在定義delegate的時(shí)候,卻沒有定義參數(shù)。

                

          在看另一個(gè)例子之前,我們先來了解下匿名方法。

                 匿名方法的使用,我們看個(gè)例子

          Code
          using System;
          namespace gosoa.com.cn
          {
              public class test
              {
                  delegate string GetUrl(string val);
                  static void Main(string [] args)
                  {
                      string domin="asaadsad";
                      GetUrl url=delegate(string  param)
                      {
                           param="http://"+param;
                           return param;
                      };
                      Console.WriteLine(url(domin));
                  }
              }
          }

           

          本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/sendling/archive/2009/03/02/3948561.aspx

          posted on 2010-03-06 23:42 HUIKK 閱讀(276) 評論(0)  編輯  收藏 所屬分類: C#
          主站蜘蛛池模板: 洛扎县| 峨眉山市| 鲁甸县| 绥棱县| 军事| 苍山县| 汪清县| 宝鸡市| 浦东新区| 理塘县| 江川县| 浮山县| 大城县| 武冈市| 罗定市| 清镇市| 海口市| 陇西县| 磐石市| 进贤县| 瑞安市| 原平市| 玛纳斯县| 会宁县| 堆龙德庆县| 石屏县| 黑河市| 兴海县| 山东省| 株洲市| 顺义区| 苍梧县| 金华市| 眉山市| 上虞市| 监利县| 五家渠市| 开封县| 汤阴县| 汉阴县| 周至县|