TOC

This article has been localized into Russian by the community.

Классы:

Методы (функции)

В то время как свойства и поля считаются пассивными частями класса, методы призваны выполнять определенные действия. Также методы могут возвращать некоторый результат. Изучая другие языки программирования, Вы могли столкнуться с таким определением как "функции". В контексте С# методы - это не что иное, как функции, принадлежащие классу. Методы весьма полезны, так как они позволяют реализовать некоторый функционал в виде блока кода, который затем может быть неоднократно использован разработчиком.

Таким образом выглядит определение метода:

<visibility> <return type> <name>(<parameters>)
{
    <method code>
}

Вот простой пример:

public int AddNumbers(int number1, int number2)
{
	return number1 + number2;
}

Данный метод осуществит сложение двух чисел и возврат суммы. Давайте рассмотрим код нашего примера подробнее:

  • public представляет собой модификатор доступа (его мы рассмотрим подробнее чуть позже в этом уроке)
  • int это тип возвращаемого значения. Если метод не должен возвращать значение, просто замените int на void
  • AddNumbers - имя нашего метода
  • (int number1, int number2) - параметры (рассмотрим подробнее позже). При объявлении метода параметры можно и не указывать, оставив пустое место между скобками. Скобки должны присутствовать обязательно.
  • Внутри метода (между фигурными скобками) расположен сам код метода. Он может состоять из определенного количества строк.

Для того чтобы вызвать метод, стоит всего-навсего написать его имя вместе со скобками. Внутри скобок укажите сами параметры (если метод должен их принимать), таким образом:

AddNumbers(3, 39);

Объявив методы в классе, можно вызывать их из других классов. Для этого стоит во время вызова добавить перед именем метода имя объекта, а в случае статического метода - имя его класса (статические методы рассмотрим позже). Вот пример вызова метода AddNumbers(), который был объявлен классе MathHelper:

public void DoMath()
{
	MathHelper mathHelper = new MathHelper();
	int result = mathHelper.AddNumbers(4, 38);
	Console.WriteLine(result);
}	

Возвращаемые значения методов

Давайте поговорим побольше о типах возвращаемых методом значений. В приведенных выше примерах мы объявили метод таким образом, что он будет возвращать целочисленное значение, но методы могут возвращать значения любого другого типа данных, представленного в C#. Также метод может и не возвращать значение, как мы видели это на примере ранее рассмотренного DoMath(). Обратите внимание, слово int было заменено на void, это означает что метод не должен ничего возвращать. В некоторых языках программирования функции не возвращающие значений называют процедурами, но в C# это всё те же "методы".

Следует помнить о том, что если для метода был определен тип возвращаемого значения, Вы ДОЛЖНЫ возвращать что-либо, в противном случае возникнет ошибка компиляции.

public int AddNumbers(int number1, int number2)
{
	Console.WriteLine(number1 + number2);
}
Compiler error: AddNumbers(int, int)': not all code paths return a value

Это означает, что вы должны использовать один или несколько операторов return внутри вашего метода, если он был объявлен как метод, возвращающий значение. Может понадобиться несколько return для ситуаций как эта:

public int AddLargeNumbers(int number1, int number2)
{			
	if((number1 > 1000) && (number2 > 1000))
	{
		return number1 + number2;
	}
	return 0;
}

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

Заключение

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


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!