Книга: C# 2008 Programmer
Anonymous Methods and Lambda Expressions
Anonymous Methods and Lambda Expressions
Beginning with C# 2.0, you can use a feature known as anonymous methods to define a delegate.
An anonymous method is an "inline" statement or expression that can be used as a delegate parameter. To see how it works, take a look at the following example:
class Program {
delegate void MethodsDelegate(string Message);
static void Main(string[] args) {
MethodsDelegate method = Method1;
//---call the delegated method---
method("Using delegate.");
Console.ReadLine();
}
static private void Method1(string Message) {
Console.WriteLine(Message);
}
}
Instead of defining a separate method and then using a delegate variable to point to it, you can shorten the code using an anonymous method:
class Program {
delegate void MethodsDelegate(string Message);
static void Main(string[] args) {
MethodsDelegate method = delegate(string Message) {
Console.WriteLine(Message);
};
//---call the delegated method---
method("Using anonymous method.");
Console.ReadLine();
}
}
In this expression, the method
delegate is an anonymous method:
MethodsDelegate method = delegate(string Message) {
Console.WriteLine(Message);
};
Anonymous methods eliminate the need to define a separate method when using delegates. This is useful if your delegated method contains a few simple statements and is not used by other code because you reduce the coding overhead in instantiating delegates by not having to create a separate method.
In C# 3.0, anonymous methods can be further shortened using a new feature known as lambda expressions. Lambda expressions are a new feature in .NET 3.5 that provides a more concise, functional syntax for writing anonymous methods.
The preceding code using anonymous methods can be rewritten using a lambda expression:
class Program {
delegate void MethodsDelegate(string Message);
static void Main(string[] args) {
MethodsDelegate method = (Message) => { Console.WriteLine(Message); };
//---call the delegated method---
method("Using Lambda Expression.");
Console.ReadLine();
}
}
Lambda expressions are discussed in more detail in Chapter 14.
- Regular Expressions
- Разработка приложений баз данных InterBase на Borland Delphi
- Open Source Insight and Discussion
- Introduction to Microprocessors and Microcontrollers
- Chapter 6. Traversing of tables and chains
- Chapter 8. Saving and restoring large rule-sets
- Chapter 11. Iptables targets and jumps
- Chapter 5 Installing and Configuring VirtualCenter 2.0
- Chapter 16. Commercial products based on Linux, iptables and netfilter
- Appendix A. Detailed explanations of special commands
- Appendix B. Common problems and questions
- Appendix E. Other resources and links