Добавить в корзинуПозвонить
Найти в Дзене

Методы в C#

Методы — это фундамент, на котором строится логика любой программы на C#. Метод — это именованный блок кода, который выполняет определенную задачу. Представьте себе: вы передаете в метод (параметры), внутри выполняете какие-то действия и получаете (возвращаемое значение). Методы объявляются внутри классов или структур. Пример: В C# по умолчанию для членов класса (полей, методов и других компонентов) используется модификатор private. Пример с разбором: Обязательные параметры Необязательные параметры (со значениями по умолчанию) Именованные аргументы Модификаторы параметров Пример с out: Пример с params: Различные типы возврата Void — ничего не возвращает Перегрузка позволяет создавать несколько методов с одинаковым именем, но разными параметрами (типами, количеством или порядком). ✅ Можно менять: ❌ Нельзя менять: Успехов в изучении C#! Когда освоите основы методов, следующим шагом рекомендую изучить рекурсию (методы, вызывающие сами себя) и локальные функции (методы внутри методов). Да
Оглавление

Методы — это фундамент, на котором строится логика любой программы на C#.

1. Что такое метод?

Метод — это именованный блок кода, который выполняет определенную задачу. Представьте себе: вы передаете в метод (параметры), внутри выполняете какие-то действия и получаете (возвращаемое значение). Методы объявляются внутри классов или структур.

Пример:

-2
-3

2. Структура метода

В C# по умолчанию для членов класса (полей, методов и других компонентов) используется модификатор private.

[ ] можно по усмотрению использовать или не использовать
[ ] можно по усмотрению использовать или не использовать

Пример с разбором:

-5

3. Параметры методов

Обязательные параметры

-6

Необязательные параметры (со значениями по умолчанию)

-7

Именованные аргументы

-8

Модификаторы параметров

-9

Пример с out:

-10

Пример с params:

-11

4. Возврат значений

Различные типы возврата

-12

Void — ничего не возвращает

-13

5. Перегрузка методов (Overloading)

Перегрузка позволяет создавать несколько методов с одинаковым именем, но разными параметрами (типами, количеством или порядком).

-14

Правила перегрузки

Можно менять:

  • Количество параметров
  • Типы параметров
  • Порядок параметров (если типы разные)

Нельзя менять:

  • Только тип возврата (компилятор не поймет, какой метод вызывать)
  • Только модификаторы параметров (ref, out)
-15

6. Практический пример со всем вместе

-16

Для закрепления

  1. Легкое: Напишите метод bool IsEven(int number), который возвращает true, если число четное.
  2. Среднее: Создайте перегруженные методы FindMax:
    для двух целых чисел
    для трех целых чисел
    для массива целых чисел
  3. Сложное: Реализуйте метод bool TryParseUserInput(string input, out int result, out string errorMessage), который пытается преобразовать строку в число и возвращает:
    true + число в result, если успех
    false + сообщение об ошибке в errorMessage

Успехов в изучении C#! Когда освоите основы методов, следующим шагом рекомендую изучить рекурсию (методы, вызывающие сами себя) и локальные функции (методы внутри методов).

Давайте разберем рекурсию и локальные функции — это мощные инструменты, которые сделают ваш код элегантнее.

Часть 1: Рекурсия

Рекурсия — это когда метод вызывает сам себя. Как матрешка или отражение в зеркалах.

Основные компоненты рекурсии:

  1. Базовый случай (условие остановки) — чтобы избежать бесконечного цикла
  2. Рекурсивный шаг — вызов метода самим собой с измененными параметрами

Классический пример: факториал

-17

Как это работает по шагам (для Factorial(3)):

-18

Пример 2: Числа Фибоначчи

-19

Пример 3: Обход папок (реальный сценарий)

-20

Пример 4: Поиск в дереве (еще один реальный сценарий)

-21

⚠️ Важное предупреждение о рекурсии

-22

Проблема рекурсии: каждый вызов занимает память в стеке. Глубокая рекурсия (например, Fibonacci(50)) может вызвать StackOverflowException.

-23

Часть 2: Локальные функции

Локальные функции — это методы, объявленные внутри другого метода. Доступны только внутри родительского метода.

Базовый синтаксис

-24

Почему это полезно?

1. Инкапсуляция вспомогательной логики

-25

2. Доступ к локальным переменным (замыкание)

-26

3. Рекурсия в локальных функциях

-27

4. Статические локальные функции (C# 8.0+)

-28

Практический комплексный пример

-29
-30

Когда что использовать?

-31

Для закрепления

Рекурсия: Напишите метод для вычисления суммы цифр числа (123 → 1+2+3=6)

-32

Локальные функции: Создайте метод ValidatePassword, который внутри использует несколько локальных функций: HasMinLength, HasDigit, HasUpper

Комбо: Напишите метод для обхода всех элементов вложенного списка (List внутри List внутри List...)

-33

Рекурсия требует практики для понимания — попробуйте нарисовать дерево вызовов на бумаге для простых примеров. Локальные функции же сразу сделают ваш код чище и организованнее.