正文

指向多个函数的委托(多播)2007-09-29 20:41:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jixian/29733.html

分享到:

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

阅读(2028) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册