定义和使用委托分三个步骤:

1、委托声明。2、委托实例化。3、委托调用。

一、定义委托

定义委托的语法如下:

<访问修饰符> delegate 返回类型 委托名();

定义委托和定义方法很相似,委托没有具体的实现体,由关键字delegate声明,直接以分号结束。委托能够代表什么样的方法,由它的返回值类型和参数列表决定。如下定义如下委托:

public delegate void MyDelegate(string name);

那么使用MyDelegate委托代表的只可以是没有返回值,参数为一个字符串的方法。

二、实例化委托

定义了委托之后,如何使用委托代表方法执行呢?首先要实例化委托。实例化委托就是将其指向某个方法,即调用委托的构造函数,并将相关联的方法作为参数传递。

如:如一个方法
          private int Add(int num1,int num2)
          {
              return(num1+num2);
          }

委托声明了以后,就可以象类一样进行实例化,实例化时把要引用的方法(如:Add)做为参数,这样委托和方法就关联了起来,就可以用委托来引用方法了。
委托和所引用的方法必须保持一致:
1、参数个数、类型、顺序必须完全一致。
2、返回值必须一致。
3、传入的方法中不能带参数,只写方法名。

三、调用委托

要调用委托的方法用委托的对象加参数,如果参数为空,也要加小括号。

为方法创建一个委托,然后立即通过这个委托调用该方法并没有太大意义,因为直接调用方法更简单。动态调用方法时,委托才真正显示出它的效用。

using System;

delegate int Operand(int a, int b); //第一步:委托声明
class Class1
{
  static void Main(string[]args)
  {
     Class1 c1 = new Class1();
     Operand ope = new Operand(c1.Add);
     //委托实例化,注意参数是要使用的参数名,且不带括号
     Console.WriteLine(ope(10, 20)); //委托调用,调用委托的方法用

委托的对象加参数
     Console.ReadLine();
  }
  //定义一个方法,求两个加数的和
private int Add(int num1, int num2)
  {
     return (num1 + num2);
  }
}

转载于:https://www.cnblogs.com/qintianqi/archive/2011/04/04/2005316.html

委托声明----委托实例化-----委托调用相关推荐

  1. C# 委托 (一)—— 委托、 泛型委托与Lambda表达式

    C# 委托 (一)-- 委托. 泛型委托与Lambda表达式 2018年08月19日 20:46:47 wnvalentin 阅读数 2992 版权声明:此文乃博主之原创.鄙人才疏,望大侠斧正.此文可 ...

  2. C#使用委托实现在Form2中调用Form1中的控件

    定义一个委托,在Form1中使用该委托声明一个静态委托变量,然后将Form1中某个使用控件的方法赋予给这个委托变量(建议最好是在Form1的构造函数中或者Form1加载事件中给该委托变量赋值,至少在F ...

  3. 第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待。

    一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型,通过委托可以把方法以参数的形式传递给另外一个方法,实现插件式的开发模式: 同时调用委托的时候,委托所包含的所有方法都会被实现. 2 ...

  4. 第一节:复习委托,并且通过委托的异步调用开启一个新线程和异步回调、异步等待

    一. 再谈委托 1. 委托是一个关键字为delegate的自定义类型,通过委托可以把方法以参数的形式传递给另外一个方法,实现插件式的开发模式: 同时调用委托的时候,委托所包含的所有方法都会被实现. 2 ...

  5. 委托、lamda表达式..委托概念-匿名函数-泛型委托-Lamda表达式-多播委托

    委托 一.什么是委托? 将一个方法作为参数传递给另一个方法(参数类型为委托delegate).   声明一个委托类型. 委托所指向的函数必须跟委托具有相同的的签名(参数个数.参数类型.返回值一样). ...

  6. 第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)

    一. 委托的发展历史和基本用法 说起委托,每个人可能都会对他有不同的理解,结合实战中委托的使用,我对其理解是:委托和类一样,是用户的一个自定义类型,委托可以有参数.有返回值,委托的关键字是delega ...

  7. 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate

    由于委托之前的博客已经详细写了,这里就简单的过一遍,复习一下: 了解委托 基于委托开发事件驱动程序变得非常简单. 使用委托可以大大简化多线程编程难度. 理解委托 委托也可以看做成一种数据类型,可以定义 ...

  8. 什么是委托,如何实现委托

    Step 1.为什么用委托 其实很简单,当我们需要把方法传递给方法时,在C#中我们就需要使用委托. 委托类似于 C++ 函数指针,但它是托管的,类型安全的. Step 2.怎么声明委托 委托的语法很简 ...

  9. C#委托之如何理解委托面试常见题:

    面试常见题: 1.委托是什么?★☆ 2.为什么需要委托?★☆ 3.委托能用来做什么?★☆ 4.如何自定义委托★☆ 5-NET默认的委托类型有哪几种?★☆ 6.怎样使用委托?★★★ 7.多播委托是什么? ...

最新文章

  1. VMware Tools手动下载
  2. Java面试题汇总及答案2021最新(序列化含答案)
  3. 二叉树的先序/中序/后序(递归、非递归)+层序遍历
  4. maven 多项目搭建
  5. vue服务端转html,普通vue-cli初始项目转为服务端渲染SSR
  6. 动态改变标题_小米相册更新,新增动态换天/赛博朋克/MIUI12界面等等!
  7. 如何解决海量数据的处理问题
  8. 深度学习 3. MatConvNet (CNN)的介绍和下载以及CPU和GPU的安装配置,Matlab2016
  9. VS201x提示无法查找或打开 PDB 文件
  10. RFID工作频率分类
  11. python安装apk到手机_安卓手机怎么安装APK文件
  12. wechat微信小程序 :对应的服务器证书无效
  13. msf(美少妇)练习
  14. c++中多个线程使用同一个函数
  15. java se1.6配套Jdk,javase 1.6与jdk1.6
  16. win10系统sqlserver2000数据库问题
  17. day09-商品规格管理
  18. Kafka 入门教程(超详细)
  19. 基于Delphi7openGauss2.0开发社区信息管理系统-设计文档
  20. JJJ:Makefile 添加

热门文章

  1. python numpy array转置_详解Numpy数组转置的三种方法T、transpose、swapaxes
  2. Verilg 2001相对于Verilog 1995的改进(Z) (内含 乘方 运算符** )
  3. nginx的日志配置
  4. 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
  5. sql 12天内的数据_想要在12周内成为数据科学家吗?
  6. R金融统计:收益、随机行走和模拟
  7. 特斯拉超级充电桩亮相:充电5分钟能跑百公里
  8. PHP(三)——PHP基础知识
  9. PHP会话管理——Session和Cookie
  10. 为什么很多大老板银行贷款几千万,看起来还那么潇洒?