2011-05-18 68 views
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

我不知道snippet 1比2更受欢迎。任何证据? – Vimvq1987 2011-05-18 09:29:09

+0

我也想知道为什么有人会为代码片段1进行操作。实际上,我在我正在编写的项目的代码库中找到了这个代码,其他人编码。 – devnull 2011-05-18 09:30:47

+0

我强烈希望第一个是第二个。如果我需要的话,我只会使用类似的东西。例如并行。 – CodesInChaos 2011-05-18 09:37:14

回答

7

我没有看到片段1多使用。我看到它使用lambda表达式的变体。

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

这可以简化为'names.ForEach(Console.WriteLine);' – 2013-05-03 16:49:10

+0

伟大的一点,大卫。 – SquidScareMe 2013-05-06 18:10:30

0

在这种情况下,没有任何好处。

你会在你的榜样,用方法2找到旧的程序员和新的程序员可能使用方法1

年长程序员匿名方法之前,更多的经验,匿名方法是新的,而不是“在他们的灵魂根深蒂固”和他们自动编程#2风格。

新程序员可能会使用#1,因为他们一直认为所有的东西都是方法调用。

+0

考虑阅读[本文](http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx)比较这两种方法。 – Servy 2013-05-03 17:15:55