Основы C# - Методы

Метод - это блок кода, который мы можем использовать для его повторного использования, что делает наши классы более читабельными и более простыми в обслуживании. Мы можем выполнить весь код внутри метода, как только мы вызовем этот метод, используя его имя и указав необходимые аргументы.

Сигнатуры методов

Мы можем объявить наши методы, указав сигнатуру метода, состоящую из модификатора доступа (public, private, protected),  имени метода и параметров метода. Если мы хотим, чтобы у нашего метода была реализация, у него должны быть две фигурные скобки, чтобы указать тело метода. Мы помещаем наш код между фигурными скобками. Кроме того, мы должны включить возвращаемое значение (void, int, double и др.), чтобы наш метод был действительным. Тип возврата не применяется как часть сигнатуры метода, но мы не можем создать метод без него. Таким образом, он внедряется в сигнатуру (или спецификацию).

Метод, возвращающий значение, должен удовлетворять двум условиям. Во-первых, необходимо указать возвращаемый тип перед именем метода. Во-вторых, в теле метода должно быть ключевое слово return, который будет возвращать значение. С другой стороны, если метод ничего не возвращает, то вместо ключевого слова return используется ключевое слово void.

В нашем проекте у нас может быть два разных метода с одинаковым именем, но у нас не может быть двух разных методов с одинаковой сигнатурой метода. По крайней мере, одна часть сигнатуры метода должна отличаться. Когда у нас есть два или более метода с одинаковым именем, но разной сигнатурой, это называется перегрузкой метода.

Параметры и аргументы

В предыдущем примере мы видели, что наши методы принимают только один параметр. Но мы можем создать метод, который принимает столько параметров, сколько нам нужно:

public void WriteAllNumbers(int a, int b, int c)
{
     Console.WriteLine($"{a} {b} {c}");
}

Важно, чтобы у каждого параметра был свой тип, имя и они были разделены запятыми.

Когда мы создаем метод в сигнатуре, мы создаем параметры (представьте их в качестве держателей места для значения одного и того же типа). Но когда мы вызываем этот метод, мы передаем реальные значения (аргументы) для этих параметров:

WriteAllNumbers(15, 16, 67);

Пример 1: Создайте приложение, которое выводит сумму, вычитание и умножение двух параметров входных данных:

class Program
{
    public static void Sum(int first, int second)
    {
        int result = first + second;
        Console.WriteLine($"Sum result: {result}");
    }

    public static void Subtract(int first, int second)
    {
        int result = first - second;
        Console.WriteLine($"Substraction result: {result}");
    }

    public static void Multiplication(int first, int second)
    {
        int result = first * second;
        Console.WriteLine($"Multiplication result: {result}");
    }

    static void Main(string[] args)
    {
        Console.WriteLine("Enter the first number: ");
        int firstArgument = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("Enter the second number: ");
        int secondArgument = Convert.ToInt32(Console.ReadLine());

        Sum(firstArgument, secondArgument);
        Subtract(firstArgument, secondArgument);
        Multiplication(firstArgument, secondArgument);

        Console.ReadKey();
    }
}

Дополнительные параметры

Необязательный параметр имеет значение по умолчанию. Метод с необязательными параметрами может быть вызван без этих аргументов. Но мы тоже можем их предоставить. Если мы предоставим значения в качестве аргументов для необязательных параметров, тогда значения по умолчанию будут переопределены:

public static void MethodWithOptParams(int first, int second = 10)
{
    Console.WriteLine(first + second);
}

MethodWithOptParams(20); //result is 30
MethodWithOptParams(20, 35); //result is 55

Резюме

Использование методов очень полезно не только в C#, но и в программировании в целом. Так что наличие этих знаний является большим преимуществом. Не бойтесь использовать их при написании кода, т.к. сделают ваш код более чистым, удобным в обслуживании, читаемым и, прежде всего, многоразовым.