2013-09-23 74 views
-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(); 
} 

当我建立这个“错误CS0201:只有分配,调用,递增,递减和新对象表达式可以用作声明”发生在4号线错误CS0201,这是什么?

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

请帮助我。

谢谢。

+1

用途{花括号}代替(括号内)。 –

回答

2

尝试用

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

这使得它的声明拉姆达代替的表达拉姆达替换

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


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

0

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

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

应该是

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

应该不重要......'return x;'和'return(x);'是等价的。在事件处理程序中它们都不好,它不应该返回任何东西。 –

+1

'()=> x = 1'和'()=>(x = 1)'虽然并不等同,但它们都没有返回值。 –