是否可以在一个赋值语句中将多个方法链接到委托?

phi*_*hil 6 c# delegates chaining

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

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

public delegate void MaskRequestSection(Request request); 
Run Code Online (Sandbox Code Playgroud)

...和使用此签名的2种方法,即......

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

public void MaskCardNumberSection(Request request)
{
    // do the masking operation
}
Run Code Online (Sandbox Code Playgroud)

目前,我正在使用以下实例化delegete,将2个​​方法链接到它然后调用它们...

private void HideDetailsInRequest(Request request)
{
    MaskRequestSection maskRequestSection = MaskCvnSection;
    maskRequestSection += MaskCardNumberSection;
    maskRequestSection(request);
}
Run Code Online (Sandbox Code Playgroud)

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

MaskRequestSection maskRequestSection = MaskCardNumberSection+ MaskCvnSection;
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Jon*_*eet 9

您可以使用强制转换:

var maskRequestSection = (MaskRequestSection) MaskCardNumberSection
       + (MaskRequestSection) MaskCvnSection;
Run Code Online (Sandbox Code Playgroud)

...但是如果没有一个,你就无法做到,因为+这里的运算符适用于委托,而不是方法组.当编译器看到的二进制+运算符,它必须制定出表达式的类型,而并不需要分配的部分考虑进去.