2011-05-18 69 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