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

当我构建这个时,第 4 行出现“错误 CS0201:只能使用赋值、调用、递增、递减和新对象表达式作为语句”。

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

请帮我。

谢谢。

4

2 回答 2

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事件不兼容。

于 2013-09-23T20:43:34.933 回答
0

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

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

应该

worker.DoWork += (o, args) => args.Result = Echo(param1, param2, key, secret);
于 2013-09-23T20:44:31.283 回答