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上找到任何专门针对此问题的内容,而我只是在问自己的好奇心.
提前致谢.
您可以使用强制转换:
var maskRequestSection = (MaskRequestSection) MaskCardNumberSection
+ (MaskRequestSection) MaskCvnSection;
Run Code Online (Sandbox Code Playgroud)
...但是如果没有一个,你就无法做到,因为+这里的运算符适用于委托,而不是方法组.当编译器看到的二进制+运算符,它必须制定出表达式的类型,而这并不需要分配的部分考虑进去.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |