This article has been localized into Russian by the community.
Функции
Функции позволяют вам выделить часть кода программы и вызвать его из других частей программы. Вам может быть трудно повторять части кода во многих местах , поэтому в таких случаях нв помощь приходят функции. В C# их обычно декларируют так:
<visibility> <return type> <name>(<parameters>)
{
<function code>
}
Чтобы вызвать функцию, вы просто пишете ее имя, открывающуюся скобку, параметры, если они есть, и закрывающуюся скобку. Вот так:
DoStuff();
Это пример нашей функции DoStuff():
public void DoStuff()
{
Console.WriteLine("I'm doing something...");
}
Первая часть public обозначает область видимости переменной и она является выборным параметром. Если вы его не определяете, то функция будет private. Подробнее об этом позже. Следующий параметр - возвращаемый тип. Если возможен допустимый в C# тип или, как показано здесь, void. Это означает, что функция не возвращает ничего. Также эта функция не имеет параметров, что видно по пустым скобкам за названием функции. Чтобы оживить картину, внесем изменения:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
Мы изменили почти все. Функция теперь возвращает целое значение, она принимает два целых параметра и вместо того, чтобы что-то выводить, меняет вычисление и тогда возвращает результат. Это значит, что мы можем добавить два числа из разных мест нашего кода, просто вызвав эту функцию, вместо того, чтобы каждый раз описывать вычисление. Этот маленький пример показывает, что функции помогают сэкономить множество времени и усилий:
int result = AddNumbers(10, 5);
Console.WriteLine(result);
Как было сказано, эта функция возвращает значение, которое должна была вычислить. Если декларируется тип возвращаемого значения функции не void, мы сами должны приложить усилия, описав, что именно должна вернуть функция. Вы можете удалить строку с возвращаемым значением из кода и уведите, что сделает программа:
'AddNumbers(int, int)': не все части кода возвращают значение
Компилятор напоминает нам, что у нас есть функция, которая ничего не возвращает, хотя мы обещали. И компилятор достаточно умный! Вместо удаления строки, попробуйте что-то вроде этого:
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
}
Вы увидите точно такую же ошибку, но почему? Потому что нет гарантии, что наш if-оператор получит значение "true" и строка "return" будет выполнена. Вы можете это исправить, введя в конце кода вторую строку "return".
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
if(result > 10)
{
return result;
}
return 0;
}
Это решит созданную нами проблему и продемонстрирует, что в функции может быть не один оператор return. Как только он будет достигнут, транслятор кода покинет функцию. Это означает, что как только результат превысит 10, return 0", никогда не будет достигнут.
This article has been deprecated!
This article has been re-organized and updated to better match the rest of the tutorial.
We suggest that you read this article instead: Methods (functions)