6

デリゲートに 2 つの (そして将来的にはさらに多くの) メソッドを連鎖させたいのですが、これを 1 つの割り当てステートメントで行う方法があるかどうか疑問に思いました。

次のように定義されたデリゲート メソッド シグネチャがあります。

public delegate void MaskRequestSection(Request request); 

...そして、この署名を使用する 2 つのメソッド、つまり...

public void MaskCvnSection(Request request)
{
    // do the masking operation
}

public void MaskCardNumberSection(Request request)
{
    // do the masking operation
}

現在、次を使用してデリゲートをインスタンス化し、2 つのメソッドをそれにチェーンして呼び出します...

private void HideDetailsInRequest(Request request)
{
    MaskRequestSection maskRequestSection = MaskCvnSection;
    maskRequestSection += MaskCardNumberSection;
    maskRequestSection(request);
}

....以下のように、両方のデリゲートを 1 つのステートメントでチェーンできない理由について知りたいのですが、

MaskRequestSection maskRequestSection = MaskCardNumberSection+ MaskCvnSection;

...しかし、1 つの宣言内で実行できる別の方法がある場合も同様です。MSDN でこれに具体的に対処するものを見つけることができませんでした。私自身の好奇心を求めているだけです。

前もって感謝します。

4

1 に答える 1

9

キャストでそれを行うことができます:

var maskRequestSection = (MaskRequestSection) MaskCardNumberSection
       + (MaskRequestSection) MaskCvnSection;

+...しかし、ここでの演算子はメソッドグループではなくデリゲートで機能するため、これなしでは実行できません。コンパイラが二項+演算子を認識すると、式の型を計算する必要がありますが、代入部分は考慮されません

于 2012-10-23T07:15:57.787 に答える