在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.mzph.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文件进行编辑。…