委托笔记(1)-委托链接(多播委托)
没有返回结果的委托链接:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo_Delegate
{
class Program
{
delegate void MethodsDelegate();
static void Main(string[] args)
{
// 首先对 methods 委托赋值,使其指向 Method1() ;
// 接下来使用 += 运算将 Method2() 和 Method2() 添加到该委托;
// 使用 -= 运算从委托中删除方法
MethodsDelegate methods = Method1;
methods += Method2;
methods += Method3;
// call the deletegate method(s)
methods();
Console.ReadKey();
}
static private void Method1()
{
Console.WriteLine("I am Method 1.");
}
static private void Method2()
{
Console.WriteLine("I am Method 2.");
}
static private void Method3()
{
Console.WriteLine("I am Method 3.");
}
}
}
输出的结果为:
I am Method 1.
I am Method 2.
I am Method 3.
有返回结果的委托链接:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo_Delegate2
{
class Program
{
delegate int MethodsDelegate(ref int num1, ref int num2);
static void Main(string[] args)
{
int num1 = 0;
int num2 = 0;
MethodsDelegate methods = Method1;
methods += Method2;
methods += Method3;
Console.WriteLine(methods(ref num1, ref num2));
Console.WriteLine("num1: {0} num2: {1}", num1, num2);
Console.ReadKey();
}
static private int Method1(ref int num1, ref int num2)
{
Console.WriteLine("I am Method 1.");
num1 = 1;
num2 = 1;
return 1;
}
static private int Method2(ref int num1, ref int num2)
{
Console.WriteLine("I am Method 2.");
num1 = 2;
num2 = 2;
return 2;
}
static private int Method3(ref int num1, ref int num2)
{
Console.WriteLine("I am Method 3.");
num1 = 3;
num2 = 3;
return 3;
}
}
}
输出的结果为:
I am Method 1.
I am Method 2.
I am Method 3.
3
num1:3 num2:3
浙公网安备 33010602011771号