An anonymous method is a C# feature that allows you to define inline, unnamed methods using the delegate keyword. They are often used for ad-hoc event handling and delegate assignments.
Lambda Expression:
A lambda expression is a concise way to define anonymous methods in C#. It provides a more readable and compact syntax for defining delegates and inline functions.
Action Lambda:
An action lambda is a lambda expression that represents a method taking no parameters and having no return value (void). It's typically used for performing actions or side effects.
A func lambda is a lambda expression that represents a method taking one or more parameters and returning a value. It's suitable for defining functions and calculations.
Example:
Func<int, int, int> add = (a, b) => a + b;
int result = add(5, 3); // Invoke the function
Console.WriteLine("Result: " + result);
Predicate Lambda:
A predicate lambda is a specialized form of Func that takes one or more parameters and returns a Boolean value. It's commonly used for filtering and testing conditions.
Example:
Predicate<int> isEven = x => x % 2 == 0;
bool even = isEven(6); // Check if a number is even
Console.WriteLine("Is Even: " + even);
Expression Tree:
An expression tree in C# represents code as a data structure. It allows you to manipulate and analyze code at a higher level of abstraction. Expression trees are often used in LINQ and dynamic query scenarios.
Example:
// Create an expression tree for an addition operation
Expression<Func<int, int, int>> addExpression = (a, b) => a + b;
// Compile and execute the expression tree
var addFunc = addExpression.Compile();
int result = addFunc(5, 3);
Console.WriteLine("Result: " + result);