2011-01-13 6 views
6

可能な重複の違い何:
Should I Create a New Delegate Instance?C#が:SomeEvent + =メソッドとSomeEvent + =新しいデリゲート(方法)

こんにちは、私は答えを探してみましたこれには、検索する用語を実際には分かっていないし、サイトで提案された質問はどれも関連性がありません。私はこれが以前にも答えられているに違いないと確信しています。

基本的には、誰かがC#で次の2行の違いは何を私に伝えることができます。たとえば

SomeEvent += SomeMethod 
SomeEvent += new SomeDelegate(SomeMethod) 

DataContextChanged += App_DataContextChanged; 
DataContextChanged += new DependencyPropertyChangedEventHandler(App_DataContextChanged); 

は、彼らの両方が同じことをしているようです。

答えて

9

これらは同じです。第2の変形例は、最初のMethod group conversionと略記されています。

簡単に言えば、コンパイラは、イベント自体のデリゲート型を使用してデリゲートの型を推定します。私が間違っていないなら、これはC#2.0で導入されました。

5

彼らは同じことをします。バリエーション

SomeEvent += new SomeDelegate(SomeMethod) 

は、C#1.0,1.1で記述する唯一の方法でした。 2.0以降では、単純化として他の選択肢を書くことができます。

3

どちらも同じです。

SomeEvent += new SomeDelegate(SomeMethod) 

言い換えれば、SomeDelegateコンストラクタが呼び出されて、オブジェクトのインスタンスが作成されます。

関連する問題