- určitá funkce se naprogramuje pouze jednou a v kódu se poté opakovaně používá
- podprogramy tříd = metody
- obsahuje parametry, ty zastupují vstupní data, se kterými podprogram pracuje
- většinou vrací určitý výsledek
- v objektových jazykách (C#) = metody
- v neobjektových jazykách (C) = funkce
- díky nim je program přehlednější a šetří paměť
- deklarují se ve třídě / struktuře / rozhraní
- jde volat opakovaně z jiných částí programu
- reference na metodu
- způsob uložení metod do proměnných
- lze díky nim jiným metodám jako parametr předávat celou metodu
- instance delegátu příjímá metodu a ukládá jí do proměnné
- "anonymní funkce"
- vycházejí z anonymních delegátů
- rozšiřuje delegáty
- jednoduchý způsob na psaní funkcí pro jednoduché operace
- lambda výraz lze přeložit do normálního kódu