0

我想使用 Lambda 表达式,但是当我尝试调用它时,会在下面注释的行中出现错误。

    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();

            }
        }
    }
4

1 回答 1

1

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

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

您应该在之后返回一些东西Console.WriteLine或使用另一种类型的委托,没有返回值。

于 2013-05-01T11:17:54.313 回答