互換性のあるデリゲート

1.互換性のあるデリゲート型

委任 無効D1();
委任 無効D2(); 
D1、D1 = 方法1。
D2 D2 = D1。

以下は許可されています。

D2 D2 = newD2(D1)。

同じターゲット方法で手数料のためには、等しいものとして扱われるべきです。

委任 のボイドDを(); 
... 
D、D1 = 方法1。
D D2 = 方法1。
Console.WriteLineを(D1 == D2)。// 

同様に、マルチキャストデリゲートのために、同じ方法と同じ順序を含み、等しいと見なされた場合。

2.パラメータ・タイプの互換性

OOPでは、親クラスを使用して任意の場所ではなく、サブクラスで使用することができ、OOPの考え方は同様に効果的なパラメータが委任します。以下のような:

委任 無効 StringAction(文字列複数可)。クラスプログラム{
     静的な 無効メイン(){ 
        StringAction SA = 新しいStringAction(ActOnObject)。
        SA(" こんにちは" ); 
    } 
    静的 ボイド ActOnObject(オブジェクトO){ 
        Console.WriteLineを(O)// こんにちは
    } 
}

3.戻り型が互換性

同じ理由で、引数の型は互換性があります。

デリゲート オブジェクト ObjectRetriever(); クラスプログラム{
     静的 ボイドメイン(){ 
        O ObjectRetriever = 新しいObjectRetriever(RetriveString)。
        オブジェクトの結果= O()。
        Console.WriteLineを(結果)。// ハロー} 
    静的 文字列 RetriveString(){ リターン " こんにちは" ; } 
}

 

おすすめ

転載: www.cnblogs.com/XiaoRuLiang/p/12422955.html