欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-17 12:34:40
本文较为详细的讲述了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<int> list = new list<int>() { 1, 2, 3, 4, 5, 6 };
//假设需要从list集合中获取大于3的所有元素以新集合返回
var newlist = newlist.findall(getnewlist);

getnewlist()为另外定义的和委托predicate<t>具有同签名的方法(predicate<t>是系统内置委托)

getnewlist()定义如下:

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

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

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

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

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

上一篇:

下一篇: