博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#委托示例

Posted on 2011-03-31 20:40  冰山鳕鱼  阅读(374)  评论(0)    收藏  举报

多播委托 即包含多个方法的委托,称为多播委托

如果连续调用多个方法,委托的签名就必须返回void,否则就只能得到委托的最后一个方法的结果.

        delegate void GetResult(int num1, int num2);
        
int result = 0;
        
private void Test()
        {
            GetResult operations 
= GetSum;
            operations 
+= GetMutiple;
            operations.Invoke(
23);
            Console.WriteLine(result);  
// 结果为11 两个方法均改变了全局变量result的值
        }
        
        
private void GetSum(int num1,int num2)
        {
            result 
+= num1 + num2;
        }
        
private void GetMutiple(int num1, int num2)
        {
            result 
+= num1 * num2;
        }

 使用匿名方法实现与上面相同的结果

 

        delegate void GetResult(int num1, int num2);
        
int result = 0;
        
private void Test()
        {
            GetResult getResult 
= delegate(int num1,int num2)
            {
                result 
= num1 + num2 + num1 * num2;
            };
            getResult(
23);
            Console.WriteLine(result);
        }

 

使用Lambda表达式

GetResult getResult = (int num1,int num2) =>
{
   result 
= num1 + num2 + num1 * num2;
};
getResult(
23);
Console.WriteLine(result);