Sometimes I suspect that programmers learning their craft in the last five years got to skip a bunch of junk—like Dynamic Data Exchange (DDE), C, MAKE files, and assembler programming—and instead focus on the "good stuff." But, in truth, programming is evolutionary: Learning that "junk" really gives you a profound knowledge of how programs work and an easy understanding of new language features like Lambda expressions (as long as you keep learning).
The key to being a good programmer is never stop learning—and occasionally go back and fill in the blanks. Write some C and C++. Try your hand at assembler and make sure that you learn about delegates and anonymous delegates. They’ll help you to understand Lambda expressions. If you haven’t mastered generics (templates in C++), go back and study that material. Having a full toolbox of programming options is hypercritical to making magic.
In this article, we look at generic delegates; specifically, Action<T>, Func<T>, and Predicate<T>. These delegates are used everywhere in .NET now, and they encompass a lot of critical skills. Toward that end, let’s start our little odyssey.