I have recently moved to .net 3.0 (windows forms, C#). I want to know more about predicates and lambda expressions. Where should we use them? Do they improve performance? and how do they work internally. Thanks.
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
If you search Stack Overflow you’ll find about a thousand answers explaining what they’re for. In short – a lambda is a way of writing an anonymous method at the point where you want to pass it to another method. Technically the same as the
delegatesyntax for an anonymous method, although with added powers of type inference so you don’t need to state the parameter types. A predicate is a method that accepts some value and returns abool– an example would be the argument toWhere.A lambda that doesn’t refer to any external variables gets turned into a private static method with a made-up name. If it refers to instance members of the enclosing class, it becomes an instance method. If it refers to local variables, those variables get “hoisted” into being fields of a compiler-generated class that is allocated when the enclosing method starts running, and the lambda’s body becomes a method in that new class.
As for performance, they don’t make that much difference. They involve the creation of temporary objects, but I find that these are collected extremely efficiently by the GC.