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;
}
}
}
评论