DC忍者猫 发表于 2013-3-31 14:55:52

求助 c#委托问题

刚开始学习c#帮忙看看下面一段代码哪里错了
using System;
delegate void EatDelegate(string food);
class myDelegate
{
    static void zsEat(string food)
    {
      Console.WriteLine("张三吃"+food);
    }
    static void lsEat(string food)
    {
      Console.WriteLine("李四吃"+food );
    }
    static void wwEat(string food)
    {
      Console.WriteLine("王五吃"+food);
    }


    static void Main()
    {
      EatDelegate zs = new EatDelegate(zsEat);
      EatDelegate ls = new EatDelegate(lsEat );
      EatDelegate ww = new EatDelegate(wwEat );
      EatDelegate eatChain;
      eatChain = zs + ls + ww;
      eatChain =("西瓜");
      Console.ReadKey();
    }
}


谢谢了!!!!!!!

ibcadmin 发表于 2013-3-31 15:25:50

main 方法中 改为

EatDelegate e1 = zsEat;
            EatDelegate e2 = lsEat;
            EatDelegate e3 = wwEat;
            e1("西瓜");
            e2("西瓜");
            e3("西瓜");
            Console.Read();

ibcadmin 发表于 2013-3-31 15:27:29

也有更简单的方法

在添加一个方法

static void run(string food , EatDelegate e)
      {
            e(food);
      }

然后MAIN方法改为

run("西瓜",zsEat);
            Console.Read();

DC忍者猫 发表于 2013-3-31 15:54:43

ibcadmin 发表于 2013-3-31 15:25 static/image/common/back.gif
main 方法中 改为

EatDelegate e1 = zsEat;


想通过委托链方法直接输入一次(“西瓜”)同时都调用了上面的三个函数   但是报错说是无法将string 隐式转换为EatDelegate不明白为什么

DC忍者猫 发表于 2013-3-31 15:56:19

ibcadmin 发表于 2013-3-31 15:27 static/image/common/back.gif
也有更简单的方法

在添加一个方法


谢谢                您的回复

ibcadmin 发表于 2013-3-31 19:44:01

那就用第一种方法

DC忍者猫 发表于 2013-4-2 09:18:36

把等于号去掉就可以了   谢谢大家

chao2332601 发表于 2013-6-16 00:33:03

谢谢分享!!!

chao2332601 发表于 2013-6-16 04:43:24

谢谢分享!!!
页: [1]
查看完整版本: 求助 c#委托问题