Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр-2(Классы).docx
Скачиваний:
3
Добавлен:
16.08.2019
Размер:
142.88 Кб
Скачать

Функции

При необходимости выполнить над данными какую-то операцию, требуемый для этого код приходилось размещать именно в том месте, где он должен был работать. Такая структура кода является ограниченной. Довольно часто необходимо, чтобы некоторые задачи, вроде поиска наиболее высокого значения в массиве, например, выполнялись в нескольких точках в программе. Решить эту проблему позволяют функции. Функции в языке С# являются средствами предоставления блоков кода, которые могут выполняться в любой точке в приложении.

Функции в языке С# называются методами, но этот термин имеет очень специфическое значение в программировании.

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

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

Функции еще также могут применяться для создания универсального кода, что позволяет им выполнять одни и те же операции над варьирующимися данными. Предоставлять необходимую для работы информацию функциям можно в виде параметров, а получать от них результаты — в виде возвращаемых значений. В предыдущем примере в роли параметра мог бы выступать подлежащий поиску массив, а в роли возвращаемого значения — максимальная величина в этом массиве. Это означает, что одну и ту же функцию можно было бы использовать для работы каждый раз с другим массивом. Имя и параметры функции (но не ее возвращаемый тип) вместе называются сигнатурой функции.

Определение и использование функций Определение и использование базовой функции базовой функции

  1. Создайте новое консольное

  2. Добавьте в файл Program, cs следующий код:

001:

002:

003:

004:

005:

006:

007:

008:

009:

010:

011:

012:

013:

class Program

{

static void Write ()

{

Console.WriteLine("Text output from function.") ;

// Текстовые выходные данные из функции

}

static void Main(string[] args)

{

Write () ;

Console.ReadKey();

}

}

3. Запустите приложение. На рис. показан результат, который должен

получиться.

Рис. Приложение в действии

Описание полученных результатов

В четырех следующих строках кода определяется функция с именем Write ():

static void Write()

{

Console.WriteLine("Text output from function.");

}

Код этой функции просто выводит в окно консоли некоторый текст, но поведение на данный момент не является важным, поскольку пока интерес представляет лишь механизм определения и использования функций.

Определение функции здесь состоит из следующих элементов.

□ Два ключевых слова: static и void.

□ Имя функции, за которым следуют круглые скобки — Write ().

□ Заключенный в фигурные скобки блок кода, который подлежит выполнению. Имена функций обычно пишутся в формате PascalCasing.

Использование круглых скобок как в определении, так и в вызове функции, является обязательным. Наиболее простым способом для обмена данными с функцией является использование возвращаемого значения. Функции, имеющие возвращаемые значения, при оценке выдают именно эти значения, точно так же, как переменные, когда используются в выражениях, при оценке выдают значения, которые содержат. Как и переменные, возвращаемые значения имеют тип. Например, можно создать функцию GetString () с возвращаемым значением типа string.

Использовать такую функцию в коде можно следующим образом:

string myString;

myString = GetString ();

Можно также создать функцию GetVal () с возвращаемым значением типа double.

Такая функция может участвовать в математическом выражении:

double myVal;

double multiplier = 5.3;

myVal = GetVal() * multiplier;

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

□ Указание в объявлении функции типа возвращаемого значения вместо ключевого слова void.

□ Использование ключевого слова return для завершения выполнения функции и передачи возвращаемого значения в вызывающий код.

В случае функции консольного приложения рассматриваемого здесь типа в коде это будет выглядеть так:

static <возвращаемый_тип> <имя_функции> {)

{

return <возвращаемое_значение>;

}

Единственным ограничением здесь является то, что значение в <возвращаемое_ значение> должно обязательно либо быть значением типа <возвращаемый_тип>, либо неявно преобразовываться в значение такого типа. Однако в качестве <возвращаемый_ тип> может указываться какой угодно тип, включая и продемонстрированные более сложные типы. Например, все может выглядеть очень просто:

static double GetVaL()

{

return 3.2;

}

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

□ список принимаемых функцией параметров вместе с их типами в определении этой функции;

□ соответствующий список параметров в каждом вызове этой функции.

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

static <возвращаемый_тип> <имя_функции> ( <тип_параметра> <имя_параметра>, ...)

{

return <возвращаемое_значение>;

}

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

static double Product(double paraml, double param2)

{

return paraml * param2;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]