I regard "method" as a sort of implementation detail here - whereas the mathematical concept of a function is common. (How often have you heard of delegates being described as "function pointers"?)
Note that the word "function" appears even within C# - both anonymous methods and lambda expressions are "anonymous functions".
You use Func<>
when you want a function - something that returns a value, possibly given some inputs. You don't really care whether or not it's backed by a method; it's just something you can call.
I'd say that the documentation for Func<>
is somewhat lacking here, rather than the choice of name. (Then there's the type system which prevents Func<void>
being valid, which would make things a lot simpler in numerous situations - but that's a different matter.)