错误CS0201,这是什么?

时间:2013-09-23 20:39:17

标签: c# visual-studio visual-studio-2008

public static void EchoAsync(
string param1, string param2, string key, string secret, Service.OnSuccess success, Service.OnFailed failed)

{

    BackgroundWorker worker = Service.CreateWorkerAsync(success, failed);
    worker.DoWork += (o, args) => (args.Result = Echo(param1, param2, key, secret));     //(Line4)
    worker.RunWorkerAsync();
}

当我构建它时,“错误CS0201:只有赋值,调用,递增,递减和新对象表达式可用作语句”发生在第4行。

我是C#的新手,我不知道如何解决这个问题......

请帮帮我。

感谢。

2 个答案:

答案 0 :(得分:2)

尝试替换

(o, args) => (args.Result = Echo(param1, param2, key, secret));

(o, args) => {args.Result = Echo(param1, param2, key, secret); };

使它成为语句lambda而不是表达式lambda。


在C#中,赋值运算符是一个有效的表达式,可以返回,表达式为lambda。但是,你的lambda的返回类型不会是void ...使它与DoWork事件不兼容。

答案 1 :(得分:0)

你的lambda周围有一组额外的括号。

worker.DoWork += (o, args) => (args.Result = Echo(param1, param2, key, secret));

应该是

worker.DoWork += (o, args) => args.Result = Echo(param1, param2, key, secret);