Delegates
A delegate is a special type, where you can store a reference to a function. With delegates you change the way how you work, and somehow reverse it. Give it a function, and after that you give if the requested values for that function, and process it.
Why? So you can assign an action (or maybe with if’elses or a for loop, different actions) and then after that give it the values and process it. Even you might not understand it yet completely, this makes code easier, and things possible that maybe wouldn’t be possible without this.
This sounds a bit crazy, but lucky enough it’s rather easy, you just need to understand it. Nothing better than some example to make you understand!