当前位置:  编程技术>.net/c#/asp.net

C#中的匿名方法实例解析

    来源: 互联网  发布时间:2014-11-03

    本文导语:  本文较为详细的讲述了C#中的匿名方法,并附上实例加以说明。现将其分享给大家供大家参考之用。具体分析如下: 首先,C#中的匿名方法是在C#2.0引入的,它终结了C#2.0之前版本声明委托的唯一方法是使用命名方法的时代。虽...

本文较为详细的讲述了C#中的匿名方法,并附上实例加以说明。现将其分享给大家供大家参考之用。具体分析如下:

首先,C#中的匿名方法是在C#2.0引入的,它终结了C#2.0之前版本声明委托的唯一方法是使用命名方法的时代。虽然在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。但是,匿名方法的信息同样也适用于 Lambda 表达式,可以说 Lambda 表达式就是匿名方法演变过来的。

我们可以使用匿名方法来忽略参数列表。 这意味着匿名方法可转换为具有各种签名的委托,而这对于 Lambda 表达式来说是不可能的。 学好匿名方法,才能更加深刻地理解好 Lambda 表达式。

在说匿名方法的使用之前,先来说说匿名方法的其他叫法。匿名方法也有人叫匿名委托、匿名函数,虽然现在普遍通用,但是还是有点区别的。msdn官网上说:要将代码块传递为委托参数,创建匿名方法则是唯一的方法。这里的匿名方法就是官方的说法,而因为匿名方法就是为了将代码块传递为委托参数,因此也有人叫匿名委托,包括笔者也喜欢这种称呼,我觉得这样叫通俗易懂。至于匿名函数,因为C#中“方法”(Method)的概念有些语言叫“函数”(Function),因此匿名方法也被人叫做匿名函数。然而在msdn文档介绍中匿名函数包括了Lambda 表达式和匿名方法,可以说匿名函数是更高的一级,所以说最官方的叫法还是匿名方法,当然其他的叫法流传也甚广,听得懂就行了,没必要纠结。

接下来说说匿名方法的写法规则,先上例子:

delegate(int i) { return i > 0; }

它遵循这样的格式书写:

delegate(形参表){方法体代码}

可以类比js中匿名函数的写法来记忆。

那么匿名方法运用在哪里呢?怎么使用呢?当你需要一个临时方法,该方法使用次数极少或者你需要的这个方法的代码很简短,那么你就可以使用匿名方法。给个简单的例子,如果需要在一个整型集合中筛选出符合条件的新集合,如下

List list = new List() { 1, 2, 3, 4, 5, 6 };
//假设需要从list集合中获取大于3的所有元素以新集合返回
var newlist = newlist.FindAll(GetNewList);

GetNewList()为另外定义的和委托Predicate具有同签名的方法(Predicate是系统内置委托)

GetNewList()定义如下:

bool GetNewList(int i)
{
  return i > 3;
}

以上是没有使用匿名方法时的写法,如果使用了匿名方法,你就会发现一切变得如此简便,

List list = new List() { 1, 2, 3, 4, 5, 6 };
var newlist = list.FindAll(delegate(int i) { return i > 3; });

通过对比,可以发现使用匿名方法能够提供与先前命名方法相同的功能,但是它已经不再需要一个在关联到委托之前就明确创建的方法了,因此也减少了实例化委托所需的编码系统开销,这就是它的最大好处。

相信本文所述对大家的C#程序设计有一定的借鉴价值。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • new Inner(){ }这个匿名类是不是就是指Inner类的一个匿名子类?
  • 关于匿名FTP的问题,匿名登陆时建的目录权限为何都是000?
  • Linux下面的"匿名管道",是否对应着某种实体?
  • 如何修改centos ftp匿名登录的路径
  • freebsd下装的pureftpd,怎么开匿名用户?怎么限制它的ip地址?
  • 求肋!更改wu-ftpd匿名用户的默认目录!
  • 如何设置sco unix5.07的ftp匿名服务器
  • 如何让ftpd支持匿名访问
  • 开源匿名通讯框架 gMix
  • 如何增加一个目录让用户可以以匿名的方式来访问(急,在线等待)
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • 如何设定LINUX下VSFTPD服务匿名登陆的默认目录
  • FTP匿名登陆 LINUX 出现错误 linux FTP 550 permission
  • 修改ftp的匿名访问方式
  • 匿名管道的堵塞
  • samba匿名可写入有问题
  • vsftpd 的匿名不能删除文件的问题!!【急】
  • vsftpd给匿名用户分配上传权限遇到的问题
  • 我装了proftpd,为什么无法匿名登陆
  • proftpd安装后匿名用户和系统用户都无法连接


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3