0
我有這個例子,我轉換 C#2委託例如:
Predicate<string> predicate2 = delegate(string n)
{
return n.StartsWith("J");
};
IList<string> namesWithJ2 = Tools.Filter(names, predicate2);
Tools.Dump(namesWithJ2);
到C#3 lambda語法例如:
var filteredNames = Tools.Filter(names, n => n.StartsWith("J"));
Tools.Dump(filteredNames);
但如何我將其轉換爲lambda語法?特別是,如何使用「=>」傳遞兩個參數(對象s,DoWorkEventArgs參數)?
_worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
BackgroundWorker worker = s as BackgroundWorker;
for (int i = 0; i < 10; i++)
{
if (worker.CancellationPending)
{
args.Cancel = true;
return;
}
Thread.Sleep(1000);
worker.ReportProgress(i + 1);
}
};
Lambdas應該用作表達式,co它編譯成表達式樹,在那裏我看不到使用lambda的好處。你爲什麼不把它作爲匿名方法? – nothrow 2009-07-30 09:45:00
我不一定同意Yossarian。我認爲lambdas應該用於表達式,因爲它們使代碼更具可讀性。但對於我的錢來說,需要大括號的lambda不會使代碼更具可讀性,而且我會說這是一種代碼味道。 – Benjol 2009-07-30 09:55:39
Banjol,所以你同意我:)(說清楚:這是imo濫用lambdas) – nothrow 2009-07-30 10:13:12