2017-08-02 6 views
-1

m $から。私は+ = Oを得ていない、それは何ですか?匿名機能に関する文法の問題

private void GetResponse(Uri uri, Action<Response> callback) 
{ 
    WebClient wc = new WebClient(); 

    wc.OpenReadCompleted += (o, a) => 
    { 
     if (callback != null) 
     { 
      DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Response)); 
      callback(ser.ReadObject(a.Result) as Response); 
     } 
    }; 
    wc.OpenReadAsync(uri); 
} 
+0

デリゲート、イベント、ラムダ式を読んで、それをカバーすることをお勧めします。 – juharr

+2

[C#でのイベントとイベントハンドラの理解](https://stackoverflow.com/questions/803242/understanding-events-and-event-handlers-in-c-sharp)の可能な複製 –

答えて

0

Iは、(OpenReadCompletedイベントをサブスクライブするために使用されるべきである)OpenReadCompletedEventHandlerの署名からわかるように、oは、送信者であるとaOpenReadCompletedEventArgsのインスタンスです。

一般に、イベントへのサブスクリプションのこのアプローチは、ラムダ式を使用してデリゲートを基本的にインスタンス化しているため、C#3.0以降でこれを行うことができます。

+0

しかし、消耗? – JAMES

1
wc.OpenReadCompleted += (o, a) => { } 

これは、匿名の代理人をwc.OpenReadCompletedイベントに割り当てます。 (o,a)の部分がメソッドのパラメータです。

oが対象です。 aはEventArgsです

関連する問題