在C#中使用代理的方式觸發事件 的簡單習作

程序簡單就 不再作說明了.
在學習IssueVision的OBSERVER(觀察者)模式時由于對代理和事件不是很熟悉,遇到了一些問題,所以就有了這個簡單習作.
TestEvent.cs

using System;

namespace ConsoleApplication2
{
??? /// <summary>
??? /// Class1 的摘要說明。
??? /// </summary>
??? class TestEvent
??? {
??????? /// <summary>
??????? /// 應用程序的主入口點。
??????? /// </summary>
??????? [STAThread]
??????? static void Main(string[] args)
??????? {
??????????? //
??????????? // TODO: 在此處添加代碼以啟動應用程序
??????????? //

??????????? TestEvent c = new TestEvent();
??????????? c.Test();
???????
??????? }


??????? public void Test()
??????? {
??????????? ChangeNumber number = new ChangeNumber();
?
??????????? number.BigEvent += new ChangeNumber.ChangeHandler(this.Big);
??????????? number.SmallEvent += new ChangeNumber.ChangeHandler(this.Small);
??????????? number.EqualEvent += new ChangeNumber.ChangeHandler(this.Equal);

??????????? number.Number = 1;??????? //運行之前Number=0;
??????????? number.Number = 1;??????? //運行之前Number=1;
??????????? number.Number = 0;??????? //運行之前Number=1;
??????? }


??????? public void Big()
??????? {
??????????? Console.WriteLine("big");
??????? }
??????? public void Small()
??????? {
??????????? Console.WriteLine("small");
??????? }
??????? public void Equal()
??????? {
??????????? Console.WriteLine("equal");
??????? }
??? }
}


ChangeNumber.cs

using System;

namespace ConsoleApplication2
{
??? /// <summary>
??? /// Class2 的摘要說明。
??? /// </summary>
??? public class ChangeNumber
??? {
??????? public delegate void ChangeHandler();

??????? public event ChangeHandler BigEvent;
??????? public event ChangeHandler SmallEvent;
??????? public event ChangeHandler EqualEvent;

??????? public ChangeNumber()
??????? {
??????????? //
??????????? // TODO: 在此處添加構造函數邏輯
??????????? //
??????? }

??????? private int m_number = 0;

??????? public int Number
??????? {
??????????? set
??????????? {
??????????????? if(value > this.m_number)
??????????????? {
??????????????????? BigEvent();??????????? //這時最好先判斷一下BigEvent是不是為null
??????????????? }
??????????????? else if(value < this.m_number)
??????????????? {
??????????????????? SmallEvent();
??????????????? }
??????????????? else
??????????????? {
??????????????????? EqualEvent();
??????????????? }


??????????????? m_number = value;
??????????? }
??????? }
??? }
}


?

轉載于:https://www.cnblogs.com/zitiger/archive/2005/07/20/196376.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277310.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277310.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277310.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c語言遞歸有何作用,c語言中,什么是函數的遞歸,能舉個例子么

(PS:因為很多IT術語的定義都來源于國外&#xff0c;我們看的中文大部分是別人看了國外的文獻然后以他的中文素養加以解釋的&#xff01;但是中華語言博大精深&#xff01;而英語就較為簡單了&#xff0c;記得上次看高德納的《surrealnumber》時候&#xff0c;文中有一句“thebe…

Nodejs 文件上傳

node js 接收表單數據原理 /*** node js 接收表單數據*/ const http require("http"); const qs require("querystring");http.createServer((request, response) > {// 表單提交的原理if (request.url "/post" && request.meth…

c語言程序設計 銀行整存整取,《C語言程序設計習題試題集》.doc

《C語言程序設計習題試題集》.doc1、已知銀行整存整取存款不同期限的月息利率分別為&#xff1a;0.315% 期限一年0.330% 期限二年0.345% 期限三年0.375% 期限五年0.420% 期限八年要求輸入存錢的本金和期限&#xff0c;求到期時能從銀行得到的利息與本金的合計。2、輸入年份year…

Grove——.NET中的ORM實現

Grove——.NET中的ORM實現 發布日期&#xff1a; 6/30/2005| 更新日期&#xff1a; 6/30/2005作者&#xff1a;林學鵬 ORM的全稱是Object Relational Mapping&#xff0c;即對象關系映射。它的實質就是將關系數據&#xff08;庫&#xff09;中的業務數據用對象的形式表示出來&a…

let和const

發布自Kindem的博客&#xff0c;歡迎大家轉載&#xff0c;但是要注意注明出處。另外&#xff0c;該文章收納在Kindem的個人的 IT 知識整理倉庫&#xff0c;歡迎 Star、Fork、投稿 let let是在ES6加入的新的變量聲明方法&#xff0c;let聲明變量的方法和var類似: let a hello; …

GIT 操作筆記

設置不用每次都輸入 賬號密碼 git config --global credential.helper store然后&#xff0c;下次再輸入一次 賬號密碼 就可以了。刪除github上的文件$ git pull origin master 將遠程倉庫里面的項目拉下來$ dir 查看有哪些文件夾$ git rm -r --cached target 刪除target文件…

[book]道法自然

前不久讀了王詠剛的〈凌波微步〉和〈凌波微步II〉&#xff0c;感覺不錯。今天把他老人家的《道法自然》也買了下來。在dearbook看到關于這本書的長篇大評&#xff0c;也一塊copy了下來&#xff1a;http://www.dearbook.com.cn/book/viewbook.aspx?pnoTS0023954認真的作者&…

c語言編手機藍牙軟件的代碼,51單片機C語言的簡易藍牙鎖代碼

#include#define uint unsigned int#define uchar unsigned charuchar r_buf; //藍牙接收到的字符存儲緩沖區sbit PWMAP2^0; //電機驅動模塊接口sbit IN1P2^2;sbit IN2P2^1;sbit STBYP2^3;sbit LED1P0^0; //LED燈接口sbit LED2P0^1;sbit LED3P0^2;sbit key1P1^0;…

列表嵌套字典,根據字典某一key排序

在返回列表嵌套字典時候&#xff0c;往往需要對數據進行一定的處理&#xff1a;按照字典中某一個key排序 In [87]: a [{"name": "牛郎", "age": 23},{"name":"許仙", "age": 20},{"name":"董永&q…

display: inline-block 布局

三個元素display: inline-block; 布局 &#xff0c;其中一個元素中存在其他元素也用了display: inline-block; 無法垂直居中&#xff0c;將這個元素設置為display: inline; 轉載于:https://www.cnblogs.com/Running00/p/11163751.html

GCC精彩之旅

在為Linux開發應用程序時&#xff0c;絕大多數情況下使用的都是C語言&#xff0c;因此幾乎每一位Linux程序員面臨的首要問題都是如何靈活運用C編譯器。目前 Linux下最常用的C語言編譯器是GCC&#xff08;GNU Compiler Collection&#xff09;&#xff0c;它是GNU項目中符合ANSI…

寫出C語言中5種數據類型的名稱及其關鍵字,求C語言中的32個關鍵字及其意思?...

關鍵字如下&#xff1a;一、數據類型關鍵字(12個)&#xff1a;(1) char &#xff1a;聲明字符型變量或函數(2) double &#xff1a;聲明雙精度變量或函數(3) enum &#xff1a;聲明枚舉類型(4) float&#xff1a;聲明浮點型變量或函數(5) int&#xff1a; 聲明整型變量或函數(6…

想要設計自己的微服務?看這篇文章就對了

歡迎大家前往騰訊云社區&#xff0c;獲取更多騰訊海量技術實踐干貨哦~ 本文由我就靜靜地看 發表于云社區專欄 本文通過使用Spring Boot&#xff0c;Spring Cloud和Docker構建的概念驗證應用程序的示例&#xff0c;為了解常見的微服務架構模式提供了一個起點。 該代碼在Github上…

函數的嵌套調用

在函數的內部調用其他的函數 def index(): func() print("index") def func(): index() # def index():# func()# print("index")## def func():# print("func")# index()#def my_max(x,y): #這個函數的作用就是比大小誰大打印出…

mysql 開發進階篇系列 41 mysql日志之慢查詢日志

一.概述 慢查詢日志記錄了所有的超過sql語句( 超時參數long_query_time單位 秒&#xff09;&#xff0c;獲得表鎖定的時間不算作執行時間。慢日志默認寫入到參數datadir(數據目錄)指定的路徑下。默認文件名是[hostname]_slow.log&#xff0c;默認超時是10秒&#xff0c;默認不開…

分數相同名次排名規則C語言,如何給數據排名(相同分數相同名次)-excel篇

使用Rank函數來做數據排名該函數是返回一個數值在一個數字列表中的排名。語法&#xff1a;RANK(number,ref,order)RANK(對象,范圍,參數)number(必填參數):是特定單位格中的數據&#xff0c;需要在整個數字列表中排名的單個對象。ref(必填參數):是指需要排名的整體數列。即范圍&…

子窗體列表在菜單中的實現

想在菜單中加入子窗體的列表&#xff0c;上網找了半天&#xff0c;都很麻煩&#xff0c;后來看看了菜單的屬性&#xff0c;發現里面有個MdiList屬性&#xff0c;設置成true&#xff0c;搞定&#xff0c;暈。 轉載于:https://www.cnblogs.com/catzhou/articles/258450.html

MySql的連接查詢

若一個查詢同時涉及到兩個或者兩個以上的表&#xff0c;則稱之為連接查詢。常見的包括&#xff1a;等值連接查詢&#xff0c;自然連接查詢&#xff0c;非等值連接查詢&#xff0c;自身連接查詢&#xff0c;外連接查詢&#xff08;左右連接&#xff09;。 1.等值與非等值連接查詢…

linux下ssh通過公鑰登錄服務器

經常會通過ssh登錄遠程服務器&#xff0c;一種是通過密碼方式登錄&#xff0c;一種是通過公鑰登錄。 如何設置通過公鑰登錄服務器 1. 首先生成自己的公鑰和私鑰 ssh-keygen 命令用來生成公鑰和私鑰-t 用來指定密鑰類型&#xff08;dsa | ecdsa | ed25519 | rsa | rsa1&#xff…

qt運行C語言后無顯示,qt designer啟動后不顯示界面問題的原因與解決辦法-站長資訊中心...

Qt 5.6.1無論是在vs里雙擊ui文件還是直接啟動designer.exe都一直無法顯示界面&#xff0c;但任務管理器中可以看到該進程是存在的。前幾天還正常的&#xff0c;但昨天加了一塊NVIDIA的顯卡(機器自帶核顯)&#xff0c;可能與此有關。幸好還可以通過QtCreator打開ui文件進行編輯。…