匿名方法的使用

4

我没有使用过匿名方法。我发现一段代码,其中一个列表被迭代,如代码片段1所示。为什么代码片段1比2更受欢迎呢?

    List<String> names = new List<String>(); 

    ... 
    //Code snippet 1
    names.ForEach(delegate(String name)
    {
        Console.WriteLine(name);
    });

    //Code snippet 2
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }

4
有证据证明代码片段1比2更受欢迎吗?我不知道。请提供证据。 - Quan Mai
我也在想为什么有人会选择代码片段1。实际上,我在我正在工作的项目的代码库中发现了这个由其他人编写的代码。 - softwarematter
我强烈偏向于第二个而非第一个选项。只有在需要时,我才会使用类似第一个的东西。例如,在并行循环中。 - CodesInChaos
2个回答

7

我很少见到使用代码片段1,但我看到有一种变体使用了lambda表达式。

names.ForEach(x=> Console.WriteLine(x));

5
这可以简化为 names.ForEach(Console.WriteLine); - David S.

0
在这种情况下,没有任何好处。
在您的示例中,您会发现老程序员使用方法2,而新程序员可能会使用方法1。
老程序员在匿名方法出现之前有更多的经验,匿名方法是新的,没有“根深蒂固地植入他们的灵魂”,他们自动以样式#2编程。
新程序员可能会使用#1,因为他们认为一切都是方法调用。

考虑阅读这篇文章,比较这两种方法:http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx - Servy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接