using System;using System.Collections.Generic;using System.Text; namespace _8_2{ class Program { public delegate float calcincome(float hourlywages); public static readonly calcincome monthlyincome = new calcincome(person.calcmonthlyincome); public static readonly calcincome annualincome = new calcincome(person.calcannualincome); public static readonly calcincome allincomes = monthlyincome + annualincome; static void Main(string[] args) { try { Console.WriteLine(Program.monthlyincome(40)); Console.WriteLine(Program.annualincome(40)); Console.WriteLine(Program.allincomes(40)); //当调用allincomes委托时,monthlyincome和annualincome委托也被调用。 // 返回值 好像是 最后一个委托的值。疑惑中? //也可以 使用委托调用清单以更精细地控制可调用函数清单。 foreach (calcincome del in allincomes.GetInvocationList()) { Console.WriteLine(del(40)); } } catch (Exception e) { Console.WriteLine(e.StackTrace); } } } public class person { public float income; public static float calcmonthlyincome(float hourlywages) { Console.WriteLine("calcmonthlyincome"); return hourlywages * 60; } public static float calcannualincome(float hourlywages) { Console.WriteLine("calcannualincome"); return hourlywages * 160 * 12; } }}

评论