.Net 之事件
using System;
namespace TestEvent
{
class Program
{
static void Main(string[] args)
{
Caculator caculator = new Caculator();
CaculateManager caculateManager = new CaculateManager();
//事件繫結
caculator.MyCaculator += caculateManager.Add;
caculator.Caculate(100, 200);
caculator.MyCaculator += caculateManager.sub;
caculator.Caculate(100, 200);
//事件登出
caculator.MyCaculator -= caculateManager.Add;
Console.Read();
}
}
public class CaculateEventArgs : EventArgs
{
///
/// 二元操作的第一個數
///
public readonly Int32 x;
///
/// 二元操作的第二個數
///
public readonly Int32 y;
public CaculateEventArgs(Int32 x, Int32 y)
{
this.x = x;
this.y = y;
}
}
public class Caculator
{
//宣告事件委託
public delegate void CaculateEventHandler(object sender, CaculateEventArgs e);
//宣告事件成員,提供外部繫結
public event CaculateEventHandler MyCaculator;
//提供受保護的虛方法,可以由子類來拒絕監視
protected virtual void OnCaculate(CaculateEventArgs e)
{
if (MyCaculator != null)
{
//觸發事件
MyCaculator(this, e);
}
}
//執行計算
public void Caculate(Int32 x, Int32 y)
{
CaculateEventArgs e = new CaculateEventArgs(x, y);
OnCaculate(e);
}
}
public class CaculateManager
{
//響應事件的方法
public void Add(object sender, CaculateEventArgs e)
{
Console.WriteLine(e.x+ e.y);
}
//響應事件的方法
public void sub(object sender, CaculateEventArgs e)
{
Console.WriteLine(e.x-e.y);
}
}
}
namespace TestEvent
{
class Program
{
static void Main(string[] args)
{
Caculator caculator = new Caculator();
CaculateManager caculateManager = new CaculateManager();
//事件繫結
caculator.MyCaculator += caculateManager.Add;
caculator.Caculate(100, 200);
caculator.MyCaculator += caculateManager.sub;
caculator.Caculate(100, 200);
//事件登出
caculator.MyCaculator -= caculateManager.Add;
Console.Read();
}
}
public class CaculateEventArgs : EventArgs
{
///
/// 二元操作的第一個數
///
public readonly Int32 x;
///
/// 二元操作的第二個數
///
public readonly Int32 y;
public CaculateEventArgs(Int32 x, Int32 y)
{
this.x = x;
this.y = y;
}
}
public class Caculator
{
//宣告事件委託
public delegate void CaculateEventHandler(object sender, CaculateEventArgs e);
//宣告事件成員,提供外部繫結
public event CaculateEventHandler MyCaculator;
//提供受保護的虛方法,可以由子類來拒絕監視
protected virtual void OnCaculate(CaculateEventArgs e)
{
if (MyCaculator != null)
{
//觸發事件
MyCaculator(this, e);
}
}
//執行計算
public void Caculate(Int32 x, Int32 y)
{
CaculateEventArgs e = new CaculateEventArgs(x, y);
OnCaculate(e);
}
}
public class CaculateManager
{
//響應事件的方法
public void Add(object sender, CaculateEventArgs e)
{
Console.WriteLine(e.x+ e.y);
}
//響應事件的方法
public void sub(object sender, CaculateEventArgs e)
{
Console.WriteLine(e.x-e.y);
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-591572/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DOM事件模型與Internet explorer事件模型之繫結機制薦事件模型
- javaScript事件(五)事件型別之滑鼠事件JavaScript事件型別
- .NET 事件模型教程(二)事件模型
- VS2005入門之Asp.Net中的事件ASP.NET事件
- 事件分發之View事件處理事件View
- 事件消費者之 Projector - 事件溯源事件Project
- 事件消費者之 Reactor - 事件溯源事件React
- 事件消費者之 Saga - 事件溯源事件
- Netty使用及事件傳遞Netty事件
- 【等待事件】SQL*Net more data to client事件SQLclient
- 【等待事件】SQL*Net vector date to client事件SQLclient
- .NET分散式Orleans - 6 - 事件溯源分散式事件
- vue之監聽事件Vue事件
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- .NET的事件溯源構建庫:Eventuous事件
- .NET委託,事件和Lambda表示式事件
- ASP.NET Web Forms – 事件簡介ASP.NETWebORM事件
- ASP.NET談委託和事件ASP.NET事件
- 等待事件之Row Cache Lock事件
- zookeeper之watch事件延遲事件
- SQL* Net message to client 和SQL * Net more data to client等待事件SQLclient事件
- .NET之WebAPIWebAPI
- 【等待事件】SQL*Net more data from dblink事件SQL
- 【等待事件】SQL*Net message from dblink事件SQL
- 事件驅動系統設計之將事件檢索與事件處理解耦事件解耦
- netty系列之:netty初探Netty
- .NET Core/.NET之Stream簡介
- 【Netty】Netty之ByteBufNetty
- 面試準備之JavaScript事件模型面試JavaScript事件模型
- C# 之委託與事件C#事件
- 等待事件之enq: HW - contention事件ENQ
- Netty之ChannelOptionNetty
- Netty背後的事件驅動機制Netty事件
- .NET Core中的事件溯源開源專案事件
- 簡單實現.NET Hook與事件模擬Hook事件
- 里程碑事件丨.NET MAUI 正式釋出事件UI
- Henry的VB.NET之旅(十二)—事件驅動事件
- .net的委託和事件的直接理解 (轉)事件