以前不会,甚至连想去学都没想。啧啧啧,我是何等朽木啊。

我先不说其中理念,或者原理,咱就先说最简单的用法。怎么去使用委托。

委托 Delegate

使用委托,就要先定义一个委托。定义一个委托就要先声明以下。 关键字 Delegate

//定义一个 返回类型 int 并且带有参数的 MyDelegate
public delegate int MyDelegate (int s);
//定一个 没有返回值 并且带有参数的 MyDelegate1
public delegate void MyDelegate1(int s);
//定一个 没有返回值 并且没有参数的 Mydelegate2
public delegate void MyDelegate2;

上面定义了三种最简单的委托方式。 这样委托的声明就OK了。 那么怎么用呢? 如下 ,我们以第一个MyDelegate为例子

既然都定义委托了,那么就肯定有人去做了。也就是说我们必须有方法来进行使用。同样,既然被人委托做事情那么 委托的条件就需要一样。下面是方法的代码,很简答

    public static  int get(int  s)
{
return s * ;
//返回s*10的结果
}

OK,我们的方法就说完了。那就是具体的怎么使用了。应为是控制台的程序 所以是静态的。

下面是具体使用方法

          //实例化,并且调用方法
Mdelegate _mydelegate = new Mdelegate(get);
//在委托中给方法赋值,返回int类型的值
int nub= _mydelegate();
//输出
Console.Write(nub);

结果

代码很简单,但是理念都是一个理念的。男人女人都是人,只不过具体划分有些不一样的。当然委托不一样。根据其定义的委托的是否有返回值,是否有参数等,方法也是一一不样的。 用法也是如此。有的需要再开一个线程,我上一个复制文件的这个程序就需要再开一个线程在能让进度条滚动。

委托的用法不只是一次用一个,也可以多次使用。

委托的多播

当然就是同样类型的委托可以合并再一次..就变成多播了,一个电视塔,可以同时播出好几十个电视频道同样感觉,同样的频道(类型)就可以合并在一起了。

ok,让我们看看例子

定一个委托 三个方法。

public delegate void Mydelegate(string str);
static void T1 (string str)
{ Console.Write("{0}",str); } static void T2 (string str)
{ Console.Write("{0}",str); } static void T3 (string str)
{ Console.Write("{0}",str); }

下面是实例化并且关联方法

// 关联T1方法
Mydelegate _mydelegate=T1;
// 关联T2方法
_mydelegate+=T2;
// 关联T3方法
_mydelegate+=T3; _mydelegate("Delegate的多播");

结果如下

委托很简单,用法也是很简单

正经学C#_委托的更多相关文章

  1. 正经学C#_介绍与其编写基础:《c#入门经典》

    本文所讲内容,均可在<c#入门经典>中可以查询.如有错误,敬请指出.谢谢! C#:全称C Shar.是微软.Net Framework平台下最为主要的客户语言之一.个人理解,c#是微软最为 ...

  2. 正经学C#_变量与其转换:《c#入门经典》

    上一节上了变量.末尾简单了说了下 命名方式,声明变量. 命名方式在C#,或者任何语言都是非常重要的一门学问.值得去深入思考一下.变量名的优化与其工作效率的提升,有很多大的关系的. 声明变量,上节介绍了 ...

  3. 正经学C#_表达式与其运算符[算术运算符]:《c#入门经典》

    表达式:正如字面意义,它是通过算术运算符来进行运算的数学公式.表达式的意义我们都是很明白的,大白话就是一个公式嘛.不是很难懂. 表达式不是一个单独的存在,必然有操作数或者操作符的.在c#中有操作符有很 ...

  4. 正经学C#_循环[do while,while,for]:[c#入门经典]

    在c#中循环语句总共三种,do...while ,while,for这三种语句. 循环语句,是为了解决一些繁琐的计算.比如输出0-10这10个数字. 在不循环的情况下你可以能这么写 Console.W ...

  5. 正经学C#_判断[switch语句]:[c#入门经典]

    switch是一个和IF语句极其相似的语句.但是Switch允许条件可以有多个值. 程序的基本结构如下 switch(textVal) { case Val: 程序代码 break case Val2 ...

  6. 正经学C#_判断[IF语句]:[c#入门经典]

    判断语句几乎是最为常用的语句之一,是最有效的. 先说IF语句,IF语句也是属于分支的一种,用来控制流程的. IF的语句是这样的 IF(xxx 条件) { //代码块 } ,b; ) { b=a--; ...

  7. 正经学C#_运算符优先级:[c#入门经典]

    学了那么多的运算符,终于差不多结束了,现在要说一下  总体的优先级别 高到低的顺序 类别  运算符  结合性  前缀 ++,--,(),+,-,!,~ 从左到右  乘除  * / %  从左到右  加 ...

  8. 正经学C#_位移与其位移运算符[c#入门经典]

    在c#入门经典一书中,最为糟糕的一节就是位移了,完全没有讲明白,也没有说全,似乎只是轻轻点了一下何为位移,带了两次原码和补码,完全不理会是否明白不明白.这一点这本书很差.因为此书说了,在大多数应用开发 ...

  9. 正经学C#_布尔运算[布尔值与其布尔运算符]:《c#入门经典》

    前面几个章节简述了 C#中得常用得算术运算符.这一章节说布尔值与其布尔运算符. 布尔值在c#中表示方式是 bool类型,这个类型可以储存两个值,true或者false,或者真或者假,可以说0或者1. ...

随机推荐

  1. 反射ORM 三层(for oracle)

    sql server and oracle 不同之处只在于: 1·参数@和: 2·自增和序列 3·oracle使用了存储过程以获得当前插入数据的ID DAL层的ORM using Oracle.Dat ...

  2. EMC (电磁兼容性)

    电磁兼容性EMC(Electro Magnetic Compatibility),是指设备或系统在其电磁环境中符合要求运行并不对其环境中的任何设备产生无法忍受的电磁干扰的能力.因此,EMC包括两个方面 ...

  3. 【转载】Linux 进程调度时间测量

    测试Context Switch time(进程上下文切换时间) --------------------------------------------------     创建两个进程(实时进程) ...

  4. (转)NHibernate之Generator主键生成方式

    本文转载自:http://www.cnblogs.com/lemon-love/archive/2010/03/10/1683058.html (1) assigned主键由外部程序负责生成,无需NH ...

  5. AngularJS:动画

    ylbtech-AngularJS:动画 1.返回顶部 1. AngularJS 动画 AngularJS 提供了动画效果,可以配合 CSS 使用. AngularJS 使用动画需要引入 angula ...

  6. mysql 异常宕机 ..InnoDB: Database page corruption on disk or a failed,,InnoDB: file read of page 8.

    mysql 测试环境异常宕机 系统:\nKylin 3.3 mysql版本:5.6.15--yum安装,麒麟提供的yum源数据库版本 error日志 181218 09:38:52 mysqld_sa ...

  7. 【转】js获取对象的所有属性和方法

    //有时候需要知道一个js对像的所有属性和方法来帮助调试,下面是再网上找到的一个比较给力的方法 function displayProp(obj){ var names=""; f ...

  8. myeclipse实用快捷键

    笔者这里总结的是个人在使用myeclipse时常用的快捷操作,总结如下: 1.Ctrl +  /             :为选中的一段代码加上或去掉注释符 Ctrl + Shift + /   :( ...

  9. Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案

    Eclipse Maven 开发一个 jee 项目时,编译时遇到以下错误:Description Resource Path Location TypeDynamic Web Module 3.0 r ...

  10. Python之整数,浮点数和布尔类型

    整数和浮点数有那个四则运算: 两种类型的数可以直接进行加减,当整数和浮点数进行加减的时候,结果会自动的变为浮点数,其中除法运算是“/”来表示的, 而余数的算术符号是“%”来表示的.如果是为了求除完后的 ...