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

これにより、式のラムダではなくステートメントのラムダになります。


C# では、代入演算子は有効な式であり、返される可能性があります。式 lambda はこれを行います。しかし、ラムダの戻り値の型は... ではなく、イベントvoidと互換性がありません。DoWork

于 2013-09-23T20:43:34.933 に答える
0

ラムダの周りに余分な括弧があります。

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 に答える