Українська
Підсумки
Висновки
Методи розбивають програму на невеликі частини з назвами, які виконують одну задачу. Оголошення методу містить тип результату, ім’я, параметри й тіло; у програмі з операторами верхнього рівня методи є локальними функціями, а перевантажені методи оголошують у класі. За замовчуванням аргументи передаються за значенням: для посилальних типів копіюється посилання. Модифікатори ref, out і in передають змінну за посиланням, необов’язкові параметри й іменовані аргументи спрощують виклики, а params дозволяє передавати змінну кількість аргументів. Перевантаження дає однакові імена діям над різними типами даних. Рекурсивний метод повинен мати базовий випадок; глибина рекурсії обмежена розміром стеку, а повторні обчислення усувають мемоізацією. XML-коментарі документують методи й показуються в підказках IntelliSense.
Питання для самоперевірки
- Навіщо розбивати програму на методи? Які ознаки доброго методу?
- З яких частин складається оголошення методу? Що таке сигнатура?
- Чим локальна функція відрізняється від методу класу? Для чого модифікатор
static? - Що відбувається під час передавання за значенням типу-значення та масиву?
- Чим відрізняються модифікатори
ref,outіin? - Як працює шаблон
TryParse? Що означаєout _? - Які правила оголошення необов’язкових параметрів? Для чого іменовані аргументи?
- Як працює модифікатор
params? Де він має розташовуватися? - Що таке перевантаження методів? Чи входить тип результату в сигнатуру?
- Як компілятор обирає перевантаження? Коли виникає неоднозначність?
- Як повернути з методу кілька значень?
- Що таке базовий випадок і рекурсивний крок?
- Що таке стек викликів? Чому виникає переповнення стеку?
- Що таке мемоізація? Чому пряма рекурсія для чисел Фібоначчі повільна?
- Для чого призначені XML-коментарі
///?
Корисні посилання
- Методи: https://learn.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/methods
- Параметри методів: https://learn.microsoft.com/dotnet/csharp/language-reference/keywords/method-parameters
- Іменовані та необов’язкові аргументи: https://learn.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/named-and-optional-arguments
- Локальні функції: https://learn.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/local-functions
- XML-коментарі: https://learn.microsoft.com/dotnet/csharp/language-reference/xmldoc/