C#委托派生自System.Delegate类,声明委托的语句
<!–more–>

delegate void sum(int a);

语法:delegate +返回类型+委托名称+参数列表

using System;
delegate int sum(int a);
namespace Delegate
{
    class Program
    {
        public static int sum = 10;
        static int jia(int a)
        {
            sum += a;
            return sum;
        }
        static int jian(int a)
        {
            sum -= a;
            return sum;
        }
        static void Main(string[] args)
        {
            sum sum = new sum(jia);
            Console.WriteLine( "sum值是"+sum(5));
            sum sum1 = new sum(jian);
            Console.WriteLine("sum值是" + sum1(5));
            sum sum2;
            sum2 = sum + sum1;
            Console.WriteLine("sum值是" + sum2(5));
        }
    }
}

输出结果:
sum值是15
sum值是10
sum值是10

委托的多播(Multicasting of a Delegate)委托的加减被称为委托的合并移除,在相同委托类型进行。
委托的合并移除可表示为
委托类型 委托名称 +=或者-= new 委托类型(注册函数名);

为什么最后sum2 的值还是10呢,是因为如果函数返回值不为空,返回的是最后一个函数返回值。

发表评论

电子邮件地址不会被公开。 必填项已用*标注