您的位置:首页 > 编程语言 > C#

C# 委托与事件简单应用

2012-09-23 17:54 393 查看
C# 事件简单应用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestIO
{
public delegate double PriceHandler();

public class PriceManager
{
public PriceHandler GetPriceHandler;

//委托处理,当价格高于100元按8.8折计算,其他按原价计算
public double GetPrice()
{
//GetPriceHandler.GetInvocationList(); 按照此调用顺序,返回多路广播委托的调用列表
if (GetPriceHandler.GetInvocationList().Count() > 0)
{
if (GetPriceHandler() > 100)
return GetPriceHandler() * 0.88;
else
return GetPriceHandler();
}
return -1;
}
}

class Program
{
static void Main(string[] args)
{
PriceManager priceManager = new PriceManager();

//调用priceManager的GetPrice方法获取价格
//直接调用委托的Invoke获取价格,两者进行比较

priceManager.GetPriceHandler = new PriceHandler(ComputerPrice);
Console.WriteLine(string.Format("GetPrice\n  Computer's price is {0}!",
priceManager.GetPrice()));
//priceManager.GetPrice();
Console.WriteLine(string.Format("Invoke\n  Computer's price is {0}!",
priceManager.GetPriceHandler.Invoke()));

Console.WriteLine();

priceManager.GetPriceHandler = new PriceHandler(BookPrice);
Console.WriteLine(string.Format("GetPrice\n  Book's price is {0}!",
priceManager.GetPrice()));
Console.WriteLine(string.Format("Invoke\n  Book's price is {0}!",
priceManager.GetPriceHandler.Invoke()));

Console.ReadKey();
}
//书本价格为98元
public static double BookPrice()
{
return 98.0;
}
//计算机价格为8800元
public static double ComputerPrice()
{
return 8800.0;
}
}

}


该代码来自cnblogs http://www.cnblogs.com/philzhou/archive/2012/04/05/2433663.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: