[英]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.