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#

这是我刚完成的一个单参数委托通用类,主要目的是为了实验委托与事件的使用,测试结果很成功。(发现时间已经是深夜1点多了,汗~~~) 现在我把整个代码贴出来,给大家,如有良策,还望赐教,谢谢。   ...

C#對Excel簡單操作

  • 2012年03月07日 14:36
  • 157KB
  • 下载

c#做的計算器(簡單)

  • 2008年09月23日 18:18
  • 21KB
  • 下载

C# 中的委托和事件的理解

文章引自:http://www.csharpwin.com/csharpspace/1002.shtml      之所以搬动这篇文章到自己的空间,是因为这是我见过的最好的讲述委托和事件的文章,我要...

C#簡單伺服客戶互傳訊息

  • 2011年04月16日 13:39
  • 46KB
  • 下载

深入理解C#委托的实质

本文是博客园麒麟.NET的《把委托说透》系列的第二篇,重点剖析C#委托的实质。 委托在本质上仍然是一个类,我们用delegate关键字声明的所有委托都继承自System.MulticastDel...

C# 中委托事件的理解实例

  • 2014年12月10日 22:37
  • 40KB
  • 下载

对于c#委托与事件的理解

  • 2011年04月27日 22:19
  • 16KB
  • 下载

C# 关于事件 委托的理解

C#看起来有点绕的感觉,不像c++那样严谨,类的定义,C#的方法,不是一个类型,知识其他类型的成员变量。还有C#必须是一个强类型的语言,参数类型都要加上前缀,比如: public void prin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 中委托的簡單理解
举报原因:
原因补充:

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