C# 中委托的簡單理解

导读:
        委托是一種可以把引用存儲為函數的型,聽起來很棘手,但其機制是非常簡單。
        據我個人理解,可以解釋為:委托是一個可以調用其它方法、事件等的架子。
        委託的的聲明類似於函數,但不帶函數體,且要使用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  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值