bearophile Wrote: > C#2 has lambdas, and C#3 adds closures and more type inferencing, so C#3+ > supports the following syntaxes: > (int i) => { return i % 3 == 1; } // C#2 > i => i % 3 == 1 // C#3 > i => { return i % 3 == 1; } // C#3, with statements too > To define a delegate o delegate closure: > Func<int> foo = i => { return i % 3 == 1; }; > Func<int> foo = i => i % 3 == 1; > Func<int> bar = () => 2; > But this isn't allowed: > Func<void> bar = () => 2;
Yeah, C# lambdas are the killer feature. Slick, readable, C-compatible. Anders knows his job. Let's face it: delegate literals suck a little, mixins as delegates suck a lot, the former is too verbose, the latter just sucks.