知识大全 什么是C#委托

Posted

篇首语:盛年不重来,一日难再晨,及时当勉励,岁月不待人。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 什么是C#委托相关的知识,希望对你有一定的参考价值。

什么是C#委托  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  什么是委托

  首先要知道什么是委托 用最通俗易懂的话来讲 你就可以把委托看成是用来执行方法(函数)的一个东西

  如何使用委托

  在使用委托的时候 你可以像对待一个类一样对待它 即先声明 再实例化 只是有点不同 类在实例化之后叫对象或实例 但委托在实例化后仍叫委托

  声明 如

   namespace Vczx ProCSharp Exc

  

   delegate double MathsOp( double x )

   //class defination here

  

  这就声明了一个委托 意义 任何一个返回值为double 且只有一个形参为double的函数 都可以用这个委托来调用

  注意 委托的声明位置在namespace里面 类的外面 其实 委托的声明也可以在类的里面 甚至是任何一个可以声明类的地方

  实例化

  首先我们要先有一个满足委托声明的方法 假设一个返回一个数的 倍的方法

   class MathsOperations

  

   public static double MultiplyBy ( double value )

  

   return value *

  

  

  有了这样一个方法 我们就可以实例化一个委托了

  MathsOp operation = new MathsOp( MathsOperations MultiplyBy )

  在实例化一个委托时 要给它一个参数 这个参数就是委托执行的方法 它可以是静态方法 也可以是实例方法(这一点有别于函数指针 函数指针只能调用静态方法) 如

  MathsOp operation = new MathsOp( new Class () Method )

  在实例化完一个委托之后 就可以用这个委托来调用方法了

  double result = operation( )

  例子代码

   namespace Vczx ProCSharp Exc

  

   delegate double MathsOp( double x )

   class Start

  

   public class MyDelegate

  

   public static double MultiplyBy ( double x )

  

   return x *

  

  

   [STAThread]

   static void Main(string[] args)

  

   MathsOp operation = new MathsOp( MyDelegate MultiplyBy )

   double x =

   double result = operation( x )

   Console WriteLine( multiply by is x result )

   Console Read()

  

  

  

  多路广播委托

  前面使用的委托只包含一个方法调用 调用委托的次数与调用方法的次数相同 如果要调用多个方法 就需要多次显示调用这个委托 其实委托也可以包含多个方法 这种委托就是多路广播委托 多路广播委托派生于System MulticastDelegate 它的Combine方法允许把多个方法调用链接在一起 我们可以通过+=来向委托添加调用方法 也可以用 =删除其中的调用方法 如

   namespace Vczx ProCSharp Exc

  

   public class MyDelegate

  

   public static void MultiplyBy ( double value )

  

   double result = value *

   Console WriteLine( Multiplying by gives value result )

  

  

   public static void Squre( double value )

  

   double result = value * value

   Console WriteLine( Squaring gives value result )

  

  

  

   delegate void MathsOp( double x )

  

   class Start

  

   [STAThread]

   static void Main(string[] args)

  

   MathsOp operation = new MathsOp( MyDelegate MultiplyBy )

   operation += new MathsOp( MyDelegate Squre )

   double x =

   operation( x )

  

   operation = new MathsOp( MyDelegate MultiplyBy )

   operation( x )

  

   Console Read()

  

  

  

  输出

  Multiplying by gives

  Squaring gives

  Squaring gives

  注意 多路广播委托声明时必须返回void 否则返回值不知道应该送回什么地方 对此 我做了一个测试 如果不将委托的声明返回void 则返回值返回的是最后一个链入委托链的方法的返回值 编译不会出错

  为什么要用委托

cha138/Article/program/net/201311/11900

相关参考

知识大全 C#委托的同步调用和异步调用

C#委托的同步调用和异步调用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对于C#委托我们谈的

知识大全 学C#委托的时候有点摸不著头脑

学C#委托的时候有点摸不著头脑  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  刚开始学到委托的时

知识大全 菜鸟入门认识C#中的委托和事件教程

菜鸟入门认识C#中的委托和事件教程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  引言 

知识大全 C#使用委托调用实现用户端等待闪屏

C#使用委托调用实现用户端等待闪屏  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 .NET 委托

.NET委托  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  委托类型定义  C#编译器处理委托时

知识大全 一个关于C#的睡前故事[2]

NET委托:一个关于C#的睡前故事[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 一个关于C#的睡前故事[3]

NET委托:一个关于C#的睡前故事[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 一个关于C#的睡前故事[1]

NET委托:一个关于C#的睡前故事[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

电话转委托与电话自动委托的区别

电话转委托与电话自动委托的区别电话转委托是投资者通过电话委托营业部工作人员中转后进入证交所,营业部根据电话委托内容代为填写委托书,委托人应于成交后办理交割时补行签章;电话自动委托则是营业部将其电脑交易

股票交易的委托

股票交易的委托(一)委托买卖的方式委托人可以采用当面委托、电话、电报、书信等方式,委托证券公司进行买卖。当面委托是指委托人直接到证券公司,当面以口头形式委托证券公司的办事人员代为买卖,或者填写委托书交