我想使用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();
}
}
}
答案 0 :(得分:1)
从您的代码中,MyDelegate
应返回字符串,但Console.WriteLine("test")
不会返回任何内容,因此无法编译:
cc.RunDelegate((a) => { Console.WriteLine("test"); }, b);
你应该在Console.WriteLine
之后返回一些东西,或者使用其他类型的委托,没有返回值。