簡體   English   中英

LINQ擴展SelectMany在3.5對4.0?

[英]LINQ extension SelectMany in 3.5 vs 4.0?

當我在這里看到達林斯的建議時......

IEnumerable<Process> processes = 
    new[] { "process1", "process2" } 
    .SelectMany(Process.GetProcessesByName);

process.getprocessesbyname()

..我有點好奇,我用VS 3.5在VS2008中嘗試過 - 除非我把它改成了,否則它沒有編譯。

IEnumerable<Process> res = 
  new string[] { "notepad", "firefox", "outlook" }
    .SelectMany(s => Process.GetProcessesByName(s));

在我懷疑是我的問題之前閱讀了一些Darins的答案,當我后來在.NET 4.0上使用.NET 4.0時 - 正如預期的那樣 - 最初的建議很有效。

我的問題是:從3.5到4.0發生了什么使得這種(新語法)成為可能? 它是擴展(hmm)擴展方法還是lambda語法的新規則?

似乎在新版本的C#(C#4.0與C#3.0 ......不是.NET的版本)中,委托選擇更加智能化。這個想法在VS2008中可用,但它在解決哪個版本的問題時遇到了問題有多個重載時使用的方法。 在編譯時選擇該方法,因此我必須相信這與更新的編譯器有關,而不是與.NET的版本有關。 您可能會發現,您可以在VS2010中為.NET 2.0編譯的解決方案中使用新的重載功能。

例如,這適用於VS2008

var ret = new[] { "Hello", "World", "!!!" }.Aggregate(Path.Combine);
// this is the value of ret => Hello\World\!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM