Elementor Header #8

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

1. Введение

Параметры методов позволяют передавать данные в метод для обработки. Это делает код более гибким и повторно используемым.

📌 Пример метода с параметром:

				
					void Greet(string name)
{
    Console.WriteLine($"Привет, {name}!");
}

				
			

🔹 Вызов метода:

				
					Greet("Алексей"); // Привет, Алексей!

				
			

2. Виды параметров в C#

2.1. Обычные параметры

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

📌 Пример:

				
					void ChangeNumber(int num)
{
    num = 10;
    Console.WriteLine($"Внутри метода: {num}");
}

int x = 5;
ChangeNumber(x);
Console.WriteLine($"После вызова метода: {x}");

				
			

🔹 Вывод:

				
					Внутри метода: 10
После вызова метода: 5

				
			

Переменная x осталась неизменной.

2.2. Передача параметров по ссылке (ref)

Позволяет передавать ссылку на переменную, а не её копию. Изменения внутри метода сохраняются.

📌 Пример:

				
					void ChangeNumber(ref int num)
{
    num = 10;
}

int x = 5;
ChangeNumber(ref x);
Console.WriteLine(x); // 10

				
			

🔹 Переменная x изменилась.

❗ Перед вызовом метода с ref параметром переменная должна быть инициализирована.

2.3. Выходные параметры (out)

Позволяют возвращать несколько значений через параметры. Переменную не нужно инициализировать перед вызовом.

📌 Пример:

				
					void GetValues(out int a, out int b)
{
    a = 10;
    b = 20;
}

int x, y;
GetValues(out x, out y);
Console.WriteLine($"{x}, {y}"); // 10, 20

				
			

🔹 Метод устанавливает значения переменных.

❗ Переменная перед вызовом метода не должна быть инициализирована.


2.4. Массив параметров (params)

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

📌 Пример:

				
					void PrintNumbers(params int[] numbers)
{
    foreach (var num in numbers)
    {
        Console.Write(num + " ");
    }
}

PrintNumbers(1, 2, 3, 4, 5); // 1 2 3 4 5

				
			

🔹 Можно передавать любое количество аргументов.

params-параметр должен быть последним в списке параметров.


2.5. Значения по умолчанию

Можно задать значение параметра по умолчанию, если он не передан.

📌 Пример:

				
					void SayHello(string name = "Гость")
{
    Console.WriteLine($"Привет, {name}!");
}

SayHello();       // Привет, Гость!
SayHello("Анна"); // Привет, Анна!

				
			

3. Передача ссылочных типов

Для объектов, массивов и списков передача всегда идёт по ссылке.

📌 Пример с массивом:

				
					string name = "Анна";
int age = 25;

string info = $"Имя: {name}, Возраст: {age}";
Console.WriteLine(info); // Имя: Анна, Возраст: 25

				
			

🔹 Массив изменился, так как передавался по ссылке.

Заключение

Параметры методов позволяют передавать данные внутрь метода.
Передача по ссылке (ref) даёт возможность менять значение переменной.
Выходные параметры (out) позволяют возвращать несколько значений.
Массив параметров (params) даёт возможность передавать разное количество аргументов.
Значения по умолчанию делают методы гибче и удобнее.

🚀 Теперь вы умеете эффективно работать с параметрами в C#!

Тестовое задание

  1. Создайте метод Swap, который меняет местами два числа с использованием ref.
  2. Создайте метод Divide, который принимает два числа и возвращает частное и остаток с использованием out.
  3. Создайте метод SumAll, который принимает любое количество чисел (params) и возвращает их сумму.

📌 Пример решения:

				
					using System;

class Program
{
    static void Swap(ref int a, ref int b)
    {
        int temp = a;
        a = b;
        b = temp;
    }

    static void Divide(int dividend, int divisor, out int quotient, out int remainder)
    {
        quotient = dividend / divisor;
        remainder = dividend % divisor;
    }

    static int SumAll(params int[] numbers)
    {
        int sum = 0;
        foreach (var num in numbers)
            sum += num;
        return sum;
    }

    static void Main()
    {
        int x = 3, y = 7;
        Swap(ref x, ref y);
        Console.WriteLine($"x = {x}, y = {y}"); // x = 7, y = 3

        int q, r;
        Divide(10, 3, out q, out r);
        Console.WriteLine($"Частное: {q}, Остаток: {r}"); // Частное: 3, Остаток: 1

        Console.WriteLine(SumAll(1, 2, 3, 4)); // 10
    }
}

				
			

Попробуйте написать и запустить этот код, чтобы убедиться в правильности выполнения операций и особенностях работы с числами с плавающей точкой.

logo