C#基礎系列--C#中委託與事件(三)
例項:
class Program
{
static void Main(string[] args)
{
DelegateEvent de = new DelegateEvent();
de.Do();
Console.Read();
}
}{
static void Main(string[] args)
{
DelegateEvent de = new DelegateEvent();
de.Do();
Console.Read();
}
class DelegateEvent
{
public void Do() {
FangDiChanPublisher fdc = new FangDiChanPublisher();
BuyerSubscriber buyer = new BuyerSubscriber();
buyer.BuyerDemand = "80平方米,100萬元RMB,三室一廳的房子";
fdc.PublisherHouseInfo();
fdc.FindHouseEvent += new HouseDelegateHandler(buyer.BuyHouse);//買房者委託中介找房
fdc.FindHouse(); // 應該通過FindHouse()來觸發事件
//fdc.FindHouse(); // 但可以被這樣直接呼叫,對委託變數的不恰當使用,當Publisher的委託變數被註釋後,則不能這樣使用
}
}
//定義委託:定義一個房地產中介. 委託是將方法(函式)做為引數傳遞
public delegate void HouseDelegateHandler(string message);
//定義事件釋出者
public class FangDiChanPublisher
{
//public HouseDelegateHandler FindHouseEvent;
public event HouseDelegateHandler FindHouseEvent;// 宣告一個事件
public static string BuyerDemand
{
set;
get;
}
public void PublisherHouseInfo()
{
Console.WriteLine("深圳某某房地產中介釋出房源資訊:擁有大量優勢房源,有意者請聯絡:xxxxxxx");
}
public void FindHouse() {
//做其他事情...
if (FindHouseEvent != null)//如果有買房者委託了中介找房
{
FindHouseEvent(BuyerDemand);
Find();//在已有的房源中找匹配的房子...
}
}
public void Find()
{
Console.WriteLine("(深圳某某房地產中介)只花了一小會工夫房子就找到了合適的房子.");
}
}
//定義事件訂閱者
public class BuyerSubscriber
{
public string BuyerDemand
{
set{FangDiChanPublisher.BuyerDemand =value;}
}
public void BuyHouse(string demand)
{
Console.WriteLine("買房者跟房地產中介提出的需求:{0}",demand);
}
}
{
public void Do() {
FangDiChanPublisher fdc = new FangDiChanPublisher();
BuyerSubscriber buyer = new BuyerSubscriber();
buyer.BuyerDemand = "80平方米,100萬元RMB,三室一廳的房子";
fdc.PublisherHouseInfo();
fdc.FindHouseEvent += new HouseDelegateHandler(buyer.BuyHouse);//買房者委託中介找房
fdc.FindHouse(); // 應該通過FindHouse()來觸發事件
//fdc.FindHouse(); // 但可以被這樣直接呼叫,對委託變數的不恰當使用,當Publisher的委託變數被註釋後,則不能這樣使用
}
}
//定義委託:定義一個房地產中介. 委託是將方法(函式)做為引數傳遞
public delegate void HouseDelegateHandler(string message);
//定義事件釋出者
public class FangDiChanPublisher
{
//public HouseDelegateHandler FindHouseEvent;
public event HouseDelegateHandler FindHouseEvent;// 宣告一個事件
public static string BuyerDemand
{
set;
get;
}
public void PublisherHouseInfo()
{
Console.WriteLine("深圳某某房地產中介釋出房源資訊:擁有大量優勢房源,有意者請聯絡:xxxxxxx");
}
public void FindHouse() {
//做其他事情...
if (FindHouseEvent != null)//如果有買房者委託了中介找房
{
FindHouseEvent(BuyerDemand);
Find();//在已有的房源中找匹配的房子...
}
}
public void Find()
{
Console.WriteLine("(深圳某某房地產中介)只花了一小會工夫房子就找到了合適的房子.");
}
}
//定義事件訂閱者
public class BuyerSubscriber
{
public string BuyerDemand
{
set{FangDiChanPublisher.BuyerDemand =value;}
}
public void BuyHouse(string demand)
{
Console.WriteLine("買房者跟房地產中介提出的需求:{0}",demand);
}
}
相關文章
- C#基礎系列--C#中委託與事件(一)C#事件
- C#中委託的呼叫C#
- C#委託與事件C#事件
- C# - 委託與事件C#事件
- C# 之委託與事件C#事件
- 詳解C#委託與事件C#事件
- C#基礎系列:委託和設計模式(2)C#設計模式
- 重學c#系列——c# 託管和非託管資源(三)C#
- C# 事件委託C#事件
- C# 委託事件C#事件
- C#基礎:泛型委託C#泛型
- C#基礎委託回顧C#
- C#基礎教程:事件C#事件
- C# 事件 vs 委託C#事件
- c# 委託和事件C#事件
- C#基礎系列:委託實現簡單設計模式(1)C#設計模式
- C# 從1到Core--委託與事件C#事件
- C#程式設計之委託與事件(一)C#程式設計事件
- C#程式設計之委託與事件(二)C#程式設計事件
- C#:委託和自定義事件C#事件
- C# 中的委託和事件C#事件
- 詳解C#基礎之委託非同步C#非同步
- 詳解C#委託,事件與回撥函式C#事件函式
- 重學c#系列——c# 託管和非託管資源與程式碼相關(四)C#
- C# 基礎知識系列-13 常見類庫(三)C#
- 詳解C#委託和事件(一)C#事件
- 詳解C#委託和事件(二)C#事件
- C#中的委託和事件(續)C#事件
- C#基礎系列:再也不用擔心面試官問我“事件”了C#面試事件
- C#快速入門教程(17)—— 委託、事件與Lambda表示式C#事件
- C#規範整理·泛型委託事件C#泛型事件
- C# 委託,事件和Lambda表示式 (轉)C#事件
- c#基礎C#
- C#基礎系列:序列化效率比拼C#
- C#委託C#
- C# 自定義事件和委託(精彩轉載)C#事件
- C#基礎之yield與SingletonC#
- C#基礎——abstractC#