I just want to verify my understanding about the following
- Delegate - a method signature
- Lambdas - anonymous function
- Anonymous Function - just that
- Action - An anonymous function that returns nothing
- Func - An anonymous function that returns something
hmm... they all do similar things, how do you define & know when to use each?
sorry, I don't explain well
Action and Func are just special cases of the Delegate. Delegate itself is something that references a method and can be used to call it.
Don't try to see C# + these features. Also because there is not a strict pragmatic answer to your question.
Start from a functional programming point of view, for example try to learn F# to get inside what and when lambdas are used (actually everywhere inside a functional language) and then you'll understand things better.
It will open your mind and make you think differently about imperative programming or mixed languages like C#.