jma*_*yor 4 .net c# vb.net lambda delegates
我看到lambda表达式已经成为语言中某些点的非常有用的工具.我一直在使用它们,大部分时间它们非常适合,使代码更短,也许更清晰.
现在..我见过一些,我会说过度使用它们.有些人非常喜欢它们,试图在任何地方使用它们.有时候C#代码看起来像一种函数式语言.
其他因素是使用lambda反射的成本以及对调试不友好的成本.
我想听听有关使用或多或少的lambda表达式有多好以及如何清除代码的意见.
(这不是更好的例子,但让我们说它是触发器)
我正在编写以下代码.使用它delegate { return null; }可以帮助我避免在每次必须使用它时询问事件是否为空.
public delegate ContactCellInfo.Guest AddGuest();
public event AddGuest GuestRequest = delegate { return null;}
Run Code Online (Sandbox Code Playgroud)
我使用resharper和明智的resharper(甚至有时候文字吃掉记忆)让我提出以下建议
public delegate ContactCellInfo.Guest AddGuest();
public event AddGuest GuestRequest = () => null;
Run Code Online (Sandbox Code Playgroud)
在我看来,使用委托的代码看起来更清晰.我并不反对Lamdba的表达,只是想听听关于如何以及何时使用它们的一些建议.
这里有两个问题.
首先,对于您的示例,使用lambda与使用匿名委托语法.编译器生成的代码将是相同的,因此它不会归结为性能差异,而是可读性差异.
就个人而言,我发现lambda语法很容易理解.我发现lambda语法几乎总是比匿名委托语法更清晰,更简洁,更容易理解,所以我几乎总是喜欢它.
至于在整个代码中使用lambda表达式 - 就个人而言,我是一个相当重的用户.我发现它们通常比定义了许多方法更容易.如果一段代码不会被任何其他方法重用(它只会被调用并存在于一个地方),我将使用lambda来表达它.
如果一段代码将被多次使用,则应将其拉出(非匿名)方法.此外,如果一段代码是可以而且应该测试的东西,我倾向于为它制作一个方法,因为这样可以简化可测试性.
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |