Last Updated: May 17, 2026
A generic delegate is a delegate type whose signature is parameterized by one or more type parameters, the same way a generic class or method is. The .NET Base Class Library ships three families you'll use constantly, Func<...>, Action<...>, and Predicate<T>, and you can declare your own when a named type makes the call site clearer. This chapter looks at all of these through the generics lens: how the type parameters connect to the signature, how variance from the _Covariance & Contravariance_ lesson applies, and how to pass and return these delegates in generic code.
What a delegate fundamentally is, how lambdas desugar, and how multicast invocation lists work belong to the _Delegates & Events_ section. This chapter assumes you've read that section and focuses on the generic side of the story.