回顾委托的几种调用方法

ExpandedBlockStart.gif cs ConsoleApp 
    class  Program
    {

        
static   int [] arr  =   new   int [] {  0 1 2 3 4 5 6 7 8 9  };

        
static   void  Main( string [] args)
        {
            var result1
=  arr.Where (  new  Func < int , bool > (Filter));//用Func委托和Filter方法

            var result2 
=  arr.Where( delegate ( int  value)
               { 
return  value  %   2   ==   0 ; });//用匿名委托

            var result3 
=  arr.Where(value  =>  value  %   2   ==   0 );//用lambda表达式

            var result4 
=  arr.Where(value  => Filter(value));//用lambda表达式+具名方法

            var result5 = arr.Where(value => {
                return Filter(value);
            });//lambda表达式+匿名方法

        }

        
static   bool  Filter( int  value)
        {
            
return  value  %   2   ==   0 ;
        }


        
static   void  Write(IEnumerable < int >  arr)
        {
            
foreach  (var ele  in  arr)
                Console.WriteLine(ele);
        }
    }

 

 

ExpandedBlockStart.gif vb ConsoleApp
Module  Module1

    
Dim  arr  As   Integer ()  =  { 0 1 2 3 4 5 6 7 8 9 }

    
Sub  Main()
        
Dim  result1  =  arr.Where( New  Func( Of   Integer Boolean )( AddressOf   Filter ))


        
Dim  result11  =  arr.Where( AddressOf   Filter ' VB会自生成一个与Func签名相同的委托


        
Dim  result2  =  arr.Where( New  Func( Of   Integer Boolean )( Function (value)
                                                                  
Return  value  Mod   2   =   0
                                                              
End Function ))

        
Dim  result3  =  arr.Where(
            
Function (value  As   Integer )
                
Return  value  Mod   2   =   0
            
End Function )
    
End Sub

    
Function   Filter ( ByVal  value  As   Integer As   Boolean
        
Return  value  Mod   2   =   0
    
End Function
End Module

 

 

两个语言各有优势,缺憾也很明显

 

转载于:https://www.cnblogs.com/cyclone-dll/archive/2011/01/04/1925116.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值