我想将两个(可能更多的将来)方法链接到一个委托,并且想知道是否有办法在一个赋值语句中执行此操作,例如
我有一个委托方法签名,定义为
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
}
目前,我使用以下方法来实例化delegete,将2个方法链接到它,然后调用它们......
private void HideDetailsInRequest(Request request)
{
MaskRequestSection maskRequestSection = MaskCvnSection;
maskRequestSection += MaskCardNumberSection;
maskRequestSection(request);
}
....我只是好奇为什么我不能在下面的一个声明中链接两个代表,
MaskRequestSection maskRequestSection = MaskCardNumberSection+ MaskCvnSection;
...但是如果有另一种方式可以在一个声明中完成。我无法在MSDN上找到任何专门针对此问题的内容,而我只是在问自己的好奇心。
提前致谢。
答案 0 :(得分:9)
你可以使用演员:
var maskRequestSection = (MaskRequestSection) MaskCardNumberSection
+ (MaskRequestSection) MaskCvnSection;
...但是如果没有一个,你就无法做到,因为这里的+
运算符适用于委托,而不是方法组。当编译器看到二进制+
运算符时,它必须计算出表达式的类型,