6

我想将两个(将来可能更多)方法链接到一个委托,只是想知道是否有一种方法可以在一个赋值语句中执行此操作,例如

我有一个委托方法签名定义为

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

....我只是好奇为什么我不能在下面的一个语句中链接两个代表,

MaskRequestSection maskRequestSection = MaskCardNumberSection+ MaskCvnSection;

...但如果有另一种方法可以在一个声明中完成。我无法在 MSDN 上找到任何专门解决此问题的内容,我只是问问自己的好奇心。

提前致谢。

4

1 回答 1

9

你可以通过演员来做到这一点:

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

...但是你不能没有一个,因为+这里的操作符在委托上工作,而不是方法组。当编译器看到二元+运算符时,它必须计算出表达式的类型,而并没有考虑到赋值部分。

于 2012-10-23T07:15:57.787 回答