尝试调用时,Lambda Expression错误

时间:2013-05-01 11:14:55

标签: c# lambda

我想使用Lambda Expression但是当我尝试调用它时,会在下面评论的行中出现错误。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleAppTestDelegate2
    {
    public delegate string MyDelegate (int a);
    public class ClassRunDelegate
    {
        public void RunDelegate(MyDelegate a, int b)
        {
            Console.WriteLine(a(b));
        }
    }

    public class MyHelp
    {
        public string test(int a)
        {
            a++;
            return a.ToString();
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            MyHelp fhelp = new MyHelp();
            //
            MyDelegate fdelegate = new MyDelegate(fhelp.test);
            ClassRunDelegate cc = new ClassRunDelegate();
            cc.RunDelegate(fdelegate, 10);            
            ///
            cc.RunDelegate((a, b) => { Console.WriteLine("test"); });// get error this line
            Console.ReadLine();

            }
        }
    }

1 个答案:

答案 0 :(得分:1)

从您的代码中,MyDelegate应返回字符串,但Console.WriteLine("test")不会返回任何内容,因此无法编译:

  cc.RunDelegate((a) => { Console.WriteLine("test"); }, b);

你应该在Console.WriteLine之后返回一些东西,或者使用其他类型的委托,没有返回值。