2013-09-23 73 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)'雖然並不等同,但它們都沒有返回值。 –