[转载]委托代理Delegate(组合委托)

.Net学习笔记——委托代理Delegate2(组合委托)- -
                                       
组合委托
委托对象的一个有用属性是,它们可以“
+”运算符来组合。组合的委托可调用组成它的那两个委托。只有相同类型的委托才可以组合。 

-”运算符可用来从组合的委托移除组件委托。

// compose.cs
using System;

delegate void MyDelegate(string s);

class MyClass
{
    
public static void Hello(string s)
    
{
        Console.WriteLine(
"  Hello, {0}!", s);
    }


    
public static void Goodbye(string s)
    
{
        Console.WriteLine(
"  Goodbye, {0}!", s);
    }


    
public static void Main()
    
{
        MyDelegate a, b, c, d;

        
// Create the delegate object a that references 
        
// the method Hello:
        a = new MyDelegate(Hello);
        
// Create the delegate object b that references 
        
// the method Goodbye:
        b = new MyDelegate(Goodbye);
        
// The two delegates, a and b, are composed to form c: 
        c = a + b;
        
// Remove a from the composed delegate, leaving d, 
        
// which calls only the method Goodbye:
        d = c - a;

        Console.WriteLine(
"Invoking delegate a:");
        a(
"A");
        Console.WriteLine(
"Invoking delegate b:");
        b(
"B");
        Console.WriteLine(
"Invoking delegate c:");
        c(
"C");
        Console.WriteLine(
"Invoking delegate d:");
        d(
"D");
    }

}

输出Invoking 
delegate a:
  Hello, A
!
Invoking 
delegate b:
  Goodbye, B
!
Invoking 
delegate c:
  Hello, C
!
  Goodbye, C
!
Invoking 
delegate d:
  Goodbye, D
!
posted @   水静痕迹  阅读(144)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示