1. 程式人生 > >Delegate(Event) Sample

Delegate(Event) Sample

using System;

namespace CSharpConsole
{
public class 場景
{
[STAThread]
public static void Main(string[] args)
{
Console.WriteLine("場景開始了....");
// 生成小王
小王 w = new 小王();
// 生成小賬
小張 z = new 小張();

// 指定監視
z.PlayGame += new PlayGameHandler(w.扣錢);

// 開始玩遊戲
z.玩遊戲();

Console.WriteLine("場景結束...");
Console.ReadLine();
}
}



// 負責扣錢的人
public class 小王
{
public 小王()
{
Console.WriteLine("生成小王...");
}

public void 扣錢(object sender,EventArgs e)
{
Console.WriteLine("小王:好小子,上班時間膽敢玩遊戲...");
Console.WriteLine("小王:看看你小子有多少錢...");
小張 f = (小張)sender;
Console.WriteLine("小張的錢: " + f.錢.ToString());
Console.WriteLine("開始扣錢......");
System.Threading.Thread.Sleep(500);
f.錢 = f.錢 - 500;
Console.WriteLine("扣完了....現在小張還剩下:" + f.錢.ToString());
}
}

// 如果玩遊戲,則引發事件
public class 小張
{
// 先定義一個事件,這個事件表示“小張”在玩遊戲。
public event PlayGameHandler PlayGame;
// 儲存小張錢的變數
private int m_Money;

public 小張()
{
Console.WriteLine("生成小張....");
m_Money = 1000; // 建構函式,初始化小張的錢。
}

public int 錢 // 此屬性可以操作小張的錢。
{
get
{
return m_Money;
}
set
{
m_Money = value;
}
}

public void 玩遊戲()
{
Console.WriteLine("小張開始玩遊戲了.....");
Console.WriteLine("小張:CS好玩,哈哈哈! 我玩.....");
System.Threading.Thread.Sleep(500);
System.EventArgs e = new EventArgs();
OnPlayGame(e);
}

protected virtual void OnPlayGame(EventArgs e)
{
if(PlayGame != null)
{
PlayGame(this,e);
}
}
}

// 定義委託處理程式
public delegate void PlayGameHandler(object sender,System.EventArgs e);

}

相關推薦

Delegate(Event) Sample

using System;namespace CSharpConsole{ public class 場景 { [STAThread] public static void Main(string[] args) { Console.WriteLine("場景開始了

a sample of delegate & event

public delegate void NameListEventHandler(object sender, NameListEventArgs e);public class NameListeventArgs:EventArgs{  string name;  int

c# delegate ,event

賦值 () ear get alt 運算符 app all fun 首先說明,event其實也是一種delegate,為了區分,我們稱一般的delegate為“plain delegate”。寫代碼的過程中,經常會在delegate和event之間進行選擇,以前也沒仔細思考

【設計模式】使用unity實現觀察者模式(delegate,event)

最近開發的時候,發現要用到設計模式中的觀察者模式,所以就找了一些資料來看看,然後自己結合Unity來實現了一下觀察者模式, 由於本人是初學者,寫的不好,望請指導。 首先,擺好如圖所示的UI的介面: 然後建立如下的指令碼: 1、Subject(這個指令碼是事件的派發類,

c#中的delegate(委托)和event(事件)

sel 指針 添加 自動 關鍵字 only cnblogs 私有 part 委托: 托付其他人做這件事 ,包括 托付自己 ,即 一個方法 可以 調用 沒有關系的其他方法 , 也可以 將委托傳遞過去 ,回調自己的方法 ,且 可以自定義參數 ,非常方便 互相傳值, 適

c# delegateevent

ima 靜下心來 不出 更多 部分 .com 運算符 你是 直接    一直誤以為event更多的比delegate多一個+= -=的運算符,沒想到在沒有event的關鍵字的情況下,delegate依然是可以用+=, -=運算符,這一下就尷尬了,於是靜下心來好好的研究了一

c# delegate action func predicate event 匿名函數 lambda

編寫 tel keyword AC 保存 word HA 沒有 上下文 1、delegate  是C#中的一種類型,它實際上是一個能夠持有對某個方法的引用的類。  與其它的類不同,delegate類能夠擁有一個簽名 (signature),並且它只能持有與它的簽名相匹配的方

.Net: C#中的委托(Delegate)和事件(Event

一道 中大 每次 summary lang tro 避免 strong lse 委托和事件在 .Net Framework中的應用非常廣泛,然而,較好地理解委托和事件對很多接觸C#時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真 是太容易了,而沒有過去的

C# 中的delegateevent、Action、Func

區別 深入 展現 委托 spa 解惑 屬於 func 時間 緣起:   之前一直很糾結C#中(delegate、event、Action、Func)的用法,這麽多方法,感覺每次使用的時候好像都沒啥區別,老感覺微軟有多此一舉之嫌,不過今天花了點時間好好研究了下,才發現他們實質

C#知識點總結系列:3、C#中DelegateEvent以及它們的區別

的區別 sent () exit 功能 final 通知 bsp t對象 1.Monitor.Enter(object)方法是獲取鎖,Monitor.Exit(object)方法是釋放鎖,這就是Monitor最常用的兩個方法,當然在使用過程中為了避免獲取鎖之後因為異常,致鎖

[轉載]淺談c#中的delegateevent

作者講的很好,風趣幽默,娓娓道來https://www.cnblogs.com/chunhui212/p/5887579.html delegate delagete可以實現將方法作為引數傳遞,理解為函式指標,它允許傳遞一個類A的方法m給另一個類B的物件,使得類B的物件能夠呼叫這個方法m。其

c#中DelegateEvent和區別

     記:( 如果想直接進入正題請略過這段)最近開始積累一些以前知道的和不知道的C#,Unity3D,Shader知識。上大學的時候只顧好好考研,好好打球,好好彈吉他,沒有太多接觸技術部落格(誰知後來硬生生成了一個文藝的程式設計師。。。)。讀研的時候寫部落

事件(event)和委託(delegate)的綜合運用例項(WinForm控制元件事件執行流程和原理),和EventHandler委託

前言 關於委託前面已經寫了: C#中委託(delegate)和多播委託的理解 Action和Func泛型委託,委託,泛型,匿名函式,Lambda表示式的綜合使用 其實初衷是為了解WinFrom中的控制元件或者COM元件中的各種事件執行的機制,裡面涉及的知識整理起來還是比較多的,各

c#中的delegate(委託)和event(事件)

一、delegate到底是什麼東西   孩子,C語言總學過吧,如果你學得不像我那麼差的話,函式指標總用過吧,就算沒用過總聽說過吧,嗯,大膽的告訴你,你完全可以把delegate理 解成C中的函式指標,它允許你傳遞一個類A的方法m給另一個類B的物件,使得類B的物件能夠呼叫這個方法m,

【C#學習】delegate(委託) 和 event(事件)

C# 中的委託(Delegate)類似於 C 或 C++ 中函式的指標。委託(Delegate) 是存有對某個方法的引用的一種引用型別變數。引用可在執行時被改變。在C#中方法不能作為引數直接傳遞,必須使用委託(用來委託方法)。delegate(委託)是一種特殊的引用型別,它將方法也作為特殊的物件封裝

【Unity3D技巧】在Unity中使用事件/委託機制(event/delegate)進行GameObject之間的通訊

引子 在前面兩篇文章: 我們瞭解了2D中的Sprite,Animation,RigidBody和Collider,在繼續開發遊戲的過程中,我們會遇到這樣的問題,如何處理GameObject之間的相互呼叫,比如說在FlappyBird中我們在小鳥撞倒管子的時候,要把這個訊息通知給許多GameOb

【Unity3D技巧】在Unity中使用事件/委託機制(event/delegate)進行GameObject之間的通訊 (二) : 引入中間層NotificationCenter

一對多的觀察者模式機制有什麼缺點? 在前一篇部落格裡面,我們寫到:【Unity3D技巧】在Unity中使用事件/委託機制(event/delegate)進行GameObject之間的通訊,其中使用了EventHandler這個委託作為通用的事件型別,實現了一對多的觀察者模式。但是這樣做有什麼

C# 委託delegate與事件Event的用法和相關知識

什麼是事件?事件有哪些?怎麼用事件? 一、什麼是事件? 事件(Event) 基本上說是一個使用者操作,如按鍵、點選、滑鼠移動、輸入值改變等等,或者是一些出現,如系統生成的通知。應用程式需要在事件發生時響應事件。 比較常用的有:窗體載入事件,滑鼠事件,鍵盤事件,值改變事件,每

C# 委託(delegate)和事件(event)詳解

C# 中的委託和事件 引言 委託 和 事件在 .Net Framework中的應用非常廣泛,然而,較好地理解委託和事件對很多接觸C#時間不長的人來說並不容易。它們就像是一道檻兒,過了這個檻的人,覺得真是太容易了,而沒有過去的人每次見到委託和事件就覺得心裡別(biè)得慌,混身不自在。本文中,我將通過兩個範例

C# eventdelegate的區別

簡單的說,event是特殊的delegate,遠古版本(不知道是C#幾點零之前)只有delegate,後來發現delegate的使用不夠好, 比如在應該使用+=的時候誤用=,就把訂閱的事件都清了,後來封裝了一手event,同時仍然保留delegate(相容老版本?)。 具體