C# 中委托的簡單理解

转载 2007年09月27日 10:20:00
导读:
        委托是一種可以把引用存儲為函數的型,聽起來很棘手,但其機制是非常簡單。
        據我個人理解,可以解釋為:委托是一個可以調用其它方法、事件等的架子。
        委託的的聲明類似於函數,但不帶函數體,且要使用delegate關鍵字。委托的聲明指定了一個函數名,其它包含一個返類型和參數列表。
  下邊做一個簡單的例字,幫助大家理解。 
        
class Program 
        
...
        
/**//// <summary> /// 1、定義委托 
        
/// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns> 

        delegate double ProcessDelegate(double param1, double param2); 
        
/**//// <summary> /// 得到乘積 
        
/// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns> 

        static double Multiply(double param1, double param2) 
        
...
        
return param1 * param2; 
        }
 
        
/**//// <summary> /// 得到除數 
        
/// </summary> /// <param name="param1"></param> /// <param name="param2"></param> /// <returns></returns> 

        static double Divide(double param1, double param2) 
        
...
        
return param1 / param2; 
        }
 
        
static void Main(string[] args) 
        
...
        
//2、聲明一下委托變量 
        ProcessDelegate process; 
        Console.WriteLine(
"Enter 2 number separated with a comma:"); 
        
string input = Console.ReadLine(); 
        
int commaPos = input.IndexOf(','); 
        
double param1 = Convert.ToDouble(input.Substring(0,commaPos)); 
        
double param2 = Convert.ToDouble(input.Substring(commaPos+1,input.Length-commaPos-1)); 
        Console.WriteLine(
"Enter M to multuply or D to divide:"); 
        input 
= Console.ReadLine(); 
        
if (input=="M"
        
...
        
//3、把一個函數引用賦給委托變量。 
        
//注:須使用new 關鍵字創建一個新委托,在這個關鍵字後面,指定委託類型,提供一個函數,不帶括號 
        
//此處將調用 Multiply()函數 
        process = new ProcessDelegate(Multiply); 
        }
 
        
else ...
        process 
= new ProcessDelegate(Divide); 
        }
 
        
//4、使用委托調用函數 
        Console.WriteLine("Result:{0}",process(param1,param2)); 
        Console.ReadKey(); 
        }
 
        }
 
  Scott CKT 著
        本文转自
http://www.cnblogs.com/scottckt/archive/2007/09/14/893159.html  

快速理解C#中的委托与事件

以下内容只是个人理解,仅供参考。 什么是委托? 先看最简单的委托例子: namespace DelegateTest { public delegate void MessageDele...
  • Wiiix
  • Wiiix
  • 2016年05月20日 20:02
  • 5609

精简菜单和完整菜单之间进行切换

初始显示精简菜单: 点击显示全部品牌之后,将隐藏的品牌显示,并高亮显示推荐的品牌,并且此时按钮的文字变为“显示精简品牌” show you code: jquery test .c...
  • QianShouYuZhiBo
  • QianShouYuZhiBo
  • 2014年06月06日 09:29
  • 984

C#中委托的理解(方便Java的童孩们理解)

C#中委托的理解(方便Java的童孩们理解)   定义:委托即Java中的抽象方法,是一个没有实现的方法,没有方法体。要在程序运行的时候才知道它的具体运行的是哪一部分代码(这个定义是从Java角度理解...
  • u012465377
  • u012465377
  • 2013年10月24日 21:22
  • 669

【图像处理】简单的图像处理软件

http://blog.sina.com.cn/s/blog_6df50e1a01019z95.html
  • ayuee1992
  • ayuee1992
  • 2014年08月08日 16:43
  • 315

超详细实用ExpandableListView教程(有图有真相)

先上效果图: 看到很多关于ExpandableListView的教程都是用一些简单的String[]字符串数组数据来填充列表项,这在实际项目运用中并不是很实用,下面容笔者来介绍一下如何高效有序地实用自...
  • sara_loveyou
  • sara_loveyou
  • 2013年05月02日 21:59
  • 1497

Linux服务器教程之路5--ProFtpd服务器设置篇

引言:Linux下的ftp服务器的配置方法网上的教程很多,以下我选了一篇介绍ProFTPD的教程,这篇教程对入门者很有帮助。在此,先谢谢原文作者鸟哥:-)簡易 FTP Server 架設 -- ...
  • jwsh1984
  • jwsh1984
  • 2006年04月22日 20:10
  • 3054

深入理解C#委托及原理

一、委托 设想,如果我们写了一个厨师做菜方法用来做菜,里面有 拿菜、切菜、配菜、炒菜 四个环节,但编写此方法代码的人想让 配菜 这个环节让调用方法的人实现,换句话说,就是想在方法被调用时接收代码 作...
  • farmwang
  • farmwang
  • 2016年06月19日 09:17
  • 1665

C#常见算法题目(面试准备)

1.写出冒泡,选择,插入排序算法。     //冒泡排序    public class bubblesorter    ...{        public void sort(int[] list...
  • jilm168
  • jilm168
  • 2007年09月07日 09:34
  • 7777

C#中委托的理解和使用

C#中有一种特殊的回调(callback)函数叫委托,委托是一种定义方法签名的类型,当需要把方法传递给其他方法时就要用到委托。     我们常常习惯把数据作为参数传递给方法,而当某个方法执行的操作不...
  • wu5101608
  • wu5101608
  • 2013年12月27日 06:38
  • 671

AR模型方法

AR模型是ORM方式的一种,其将SQL查询进行封装,使得数据库读写更加方便便捷。其中一个AR类代表数据库中的一张表。 1.类的定义(Model模型) 定义方式如下: class ...
  • wide288
  • wide288
  • 2014年04月24日 12:19
  • 1480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 中委托的簡單理解
举报原因:
原因补充:

(最多只允许输入30个字)