c#编程:委托程序举例

委托不是方法,它是一种特殊的类型,用于对与该委托有相同签名(签名这里指方法的参数列表)的方法的调用。

委托的一个重要特点是:委托在调用方法时,不必关心方法所属的对象的类型,它只要求所提供的方法的签名和委托的签名相匹配。

委托声明格式:修饰符 delegate 返回类型 委托名(参数列表)

public  delegate  void       BTEvent();

附一个例子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 委托
{
    public class ZhangXiaoSan
    {
        //其实买票的是小张
        public static void BuyTicket()
        {
            Console.WriteLine("买车票!");
        }
        public static void BuyMovieTicket()
        {
            Console.WriteLine("买电影票!");
        }
        public static void BuyStocksTicket()
        {
            Console.WriteLine("买股票!");
        }
    }
    class Program
    {
        //声明一个委托
//委托声明格式:修饰符 delegate 返回类型 委托名(参数列表)
        public delegate void BTEvent();
        static void Main(string[] args)
        {
            Console.WriteLine("===========单个委托============");
            BTEvent myDelegate = new BTEvent(ZhangXiaoSan.BuyTicket);
            myDelegate();//调用委托

            Console.WriteLine("===========委托合并============");
            //委托时可以合并的,委托的合并称为多播
            myDelegate += ZhangXiaoSan.BuyMovieTicket;
            myDelegate += ZhangXiaoSan.BuyStocksTicket;
            myDelegate();//调用委托

            Console.WriteLine("==========取消委托=============");
            myDelegate -= ZhangXiaoSan.BuyMovieTicket;
            myDelegate();//调用委托

            Console.ReadKey();
        }
    }
}
时间: 2024-10-29 05:00:25

c#编程:委托程序举例的相关文章

python/面向过程的编程思想及举例

python基础--面向过程的编程思想及举例 面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下. Send可以传多个值,但是必须是元组类型 面向过程的编程思想 像流水线,代码简洁,体系结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

python基础——面向过程的编程思想及举例

面向过程的编程思想 1.面向过程的编程思想及举例 写程序时: 要先想功能,分步实现 2. os模块中walk输出目录中文件路径 os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下. Send可以传多个值,但是必须是元组类型 面向过程的编程思想 像流水线,代码简洁,体系结构 实现对一个目录下面(包含子目录下面)有一行包含过滤字符串就输出其文件名的绝对路径 C:\python_fullstack_wen\day24\wen """ import ti

Socket网络编程--聊天程序(6)

这一小节将增加一个用户的结构体,用于保存用户的用户名和密码,然后发给服务器,然后在服务器进行判断验证.这里就有一个问题,以前讲的就是发送字符串是使用char类型进行传输,然后在服务器进行用同样是字符串进行接收.然而作为一个结构体是不是也可以呢?如果有看send或recv的函数定义就知道第二个参数是void *类型,也就是说这两个函数对传入的类型其实是不做要求的,只是要你传输个地址,然后后面接一个大小就可以了.就是要send在这个地址取值,去大小为size个,然后传输.学过TCP/IP就知道,我们

基于win32的socket编程及程序实现

初步研究了win32平台的Windows Sockets,它是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用.包括流式套接字(提供面向连接.可靠的数据传输服务,数据无差错.无重复的发送,且按发送顺序接收.)和数据报套接字(提供无连接服务.数据包以独立包形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱.).原始套接字. CS模型:在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户

Windows编程 - 遍历程序使用的动态链接库(dll) 代码(C++)

遍历程序使用的动态链接库(dll) 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 遍历程序使用的动态链接库(dll), 首先需要遍历所有进程, 匹配进程名称与进程ID, 然后根据进程名称, 输出所有使用的库(dll). 示例中Image.exe是预先启动的程序. 代码包含遍历进程的代码, 和输出动态链接库(dll)的代码. 代码: /* * main.cpp * * Created on: 2014.06.08 * Author: Spike

Socket网络编程--聊天程序(9)

这一节应该是聊天程序的最后一节了,现在回顾我们的聊天程序,看起来还有很多功能没有实现,但是不管怎么说,都还是不错的.这一节我们将讲多服务器问题(高大上的说法就是负载问题了.)至于聊天程序的文件发送(也即二进制文件发送例如图片)和单点登陆(就是多加一个数组fd_L[],用来记录是否已经登陆过了.),这些问题就不讨论了. 支持多服务器实现负载问题的聊天程序 今天才知道原来我们一直使用的select来处理IO多路复用的这个函数最多只能有1024个连接,因为内部实现里面的数组就是只有1024,多了不行.

Socket网络编程--聊天程序(8)

上一节已经完成了对用户的身份验证了,既然有了验证,那么接下来就能对不同的客户端进行区分了,所以这一节讲实现私聊功能.就是通过服务器对客户端的数据进行转发到特定的用户上, 实现私聊功能的聊天程序 实现的技术细节是:对客户端发送的数据增加一个标识头,由于我们处理的是纯文本,所以为了讲解的方便就把标识头加到聊天信息的前面,然后在服务器中判断.如果是要在做成产品的话,因为要考虑传送纯文本,图片,文件,特定的结构体等等其他非纯文本信息,那么我们可以对一次聊天信息,发送两次数据,第一次用TCP发送一个结构体

Socket网络编程--聊天程序(7)

接上一小节,本来是计划这一节用来讲数据库的增删改查,但是在实现的过程中,出现了一点小问题,也不是技术的问题,就是在字符界面上比较不好操作.比如要注册一个帐号,就需要弄个字符界面提示,然后输入数字表示选择,在依次输入信息.(这一点,用C写过什么管理系统就知道,很是麻烦.)考虑到本程序讲的是网络编程,就不弄增删改查了,就判断一个用户名密码是否正确就行了. 首先是安装mysql和创建数据库,所用到的命令如下: 1 su root //使用root用户 2 yum install mysql-devel

13.JAVA之GUI编程将程序打包jar

jar基本命令: 目标:将下列MyMenuDemo.java代码打包成jar. 方法如下: 1.把java代码放到d:\myclass目录下. 2.按下快捷键ctrl+r,打开运行窗口,输入cmd后回车. 3.输入"d:"后按下回车键,进入D盘根目录. 4.输入命令:cd myclass,按下回车键. 5.编译java源码文件,输入命令javac MyMenuDemo.java,之后按下回车键执行命令. 之后删除源码MyMenuDemo.java文件. 6.编写配置信息1.txt,内容