zkkpkk 发表于 2007-4-26 13:16:18

《百家讲坛之ZKK读C#委托》·第一讲

C#是面向对象的程序设计语言,有很多OO的特点,如接口、继承、多态、委托等,我发现这几次课老谢讲委托同学们都很痛苦,所以我在这里用尽量通俗易懂的语言来讲解这个另人发指的东西。

      委托可以看作是C#的一种新类型,其实就算单按字面上的理解也能解释委托的性质,就是代理,代替某个方法去做某件事情。
      1.合法的委托声明:
      delegate string GetString();
      也可以加上访问修饰符public delegate string GetString();我们在这里合法地声明了一个无参数,返回类型为字符串的一个委托。

      如果要声明一个名为MyDelegate的公有的委托,返回类型为Double,具有两个参数均为Long类型,则可声明如下:
      public delegate double MyDelegate(long l1,long l2);

      2.让我们的委托参与工作:
      看下列代码,它诠释了一个最简单的委托的工作流程
            public delegate string GetString();
      class Class1
      {      
                //结构体Currency
                struct Currency
                {
                        public Currency()
                        {}
                        public static string GetCurrUnit()
                        {
                              return "dddd";
                        }
                }
                static void Main(string[] args)
                {
                        int x=11,y=22;
                        //使委托绑定方法,绑定的方法是类型x的ToString方法,方法后省略参数列表是委托调用的特有格式,
                        //因为我们声明的委托参数列表为0参数(没有参数),所以和ToString 0参数的重载函数,
                        //符合我们之前声明的委托,所以委托对象g1绑定的是0参数的ToString
                        GetString g1 = new GetString(x.ToString);
                        //以下输出等同于输出x.ToString(),委托替我们完成了ToString将整型x转换为string型的工作
                        Console.WriteLine(g1());
                        
                        //委托也可以调用结构体类型的方法,以下语句分别使得委托对象g1绑定的是结构体对象cu的ToString方法
                        //和GetCurrUnit方法
                        Currency cu = new Currency();
                        g1 = new GetString(cu.ToString);
                        Console.WriteLine(g1());
                        //因为是静态方法,所以用类名直接引出
                        g1 = new GetString(Currency.GetCurrUnit);
                        Console.WriteLine(g1());
                        Console.ReadLine();
                }                              
      }
      

[ 本帖最后由 zkkpkk 于 2007-4-27 12:25 编辑 ]

zkkpkk 发表于 2007-4-26 13:23:33

今天发放了上月的销售提成 1411 思明论坛!

   下次努力哦!……委托是C#独有的新类型,我们若能够灵活运用委托便可以写出地道的C#代码,而想要灵活运用委托,就必须要弄懂委托的特性,下一讲我会通过两个简单的例子来展现委托的工作特性

dv-Partner 发表于 2007-4-26 13:24:07

不幸的你遭到暴徒洗劫!掳去了你 1/4的现金 !(人民政府再次提醒大家有钱要存银行)

   下次努力哦!……:handshake

可惜偶从C++ 直接转到VB.net   JAVA 等了。.!!1

zkkpkk 发表于 2007-6-1 20:42:03

顶起来,第三讲——委托组播就要出啦:titter

zkkpkk 发表于 2007-6-1 20:43:08

原帖由 dv-Partner 于 2007-4-26 13:24 发表 http://172.16.1.236/images/common/back.gif
:handshake

可惜偶从C++ 直接转到VB.net   JAVA 等了。.!!1
C++是底层高级语言的超级无敌霸王3000,C#是中层高级语言的超级无敌霸王3000

眼里只有¥ 发表于 2007-6-3 20:32:41

楼主你当这个版的版主吧,我正打算去当网络技术的版主

zkkpkk 发表于 2007-6-4 10:21:53

原帖由 眼里只有¥ 于 2007-6-3 20:32 发表 http://172.16.1.236/images/common/back.gif
楼主你当这个版的版主吧,我正打算去当网络技术的版主
觉得当不当一样,不过你有此意的话倒是可以玩玩
页: [1]
查看完整版本: 《百家讲坛之ZKK读C#委托》·第一讲