Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103593005
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-15 19:46:20

    来源:赛迪论坛    作者:Sabine

四、 市场调查结果

匿名方法是好东西吗?市场调查证明匿名方法确实不错,因为它们能够减少由于实例化代理和减少分离方法所导致的代码开销。而且市场调查还证明匿名方法增强了可用性和可维护性。我认为良好命名的方法也可以实现这一点。请看下面的代码容易维护吗?

private void Form1_Load(object sender, EventArgs e)

{

 BindClick(delegate { Debug.WriteLine("button1 click"); });

}

private void BindClick(EventHandler handler)

{

 button1.Click += handler;

}

在这个例子中,我们把一个代理传递给一个方法-通过把该代理作为一个匿名方法传递。仅是保持圆括号、分号和方括号的顺序和个数就已令人十分头疼。

如果引用经典示例来说明,那就是匿名方法仅仅是因剔除了线程(它们使用代理)而减少了相应的创建代理和方法的开销。这倒是真的,但是线程并不经常使用并且想正确使用也非常困难。我在想,要想使代码更为秘密些而不是更为公开些该是多么谨慎的一件事情。

就语言方面来讲,我喜欢方法;但是作为一个实际开发中的事物,匿名方法也许仅是微软的某个发明者有点太聪明的一种证明。

五、 总结

匿名方法是可以存在没有名字的方法的证明-它们可以被定义并使用在任何能够使用代理的地方。代理是事件处理器的包装器。匿名方法到底有多大的实用性和普遍使用价值还有待于进一步的实践证明。我怀疑,匿名方法将不会比运算符重载有更大的用途,并且其使用也会少之又少;但是匿名方法现在已是.NET的一部分,所以在阅读代码时能够识别出它们来还是很有必要的。

阅读(208) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~