Программирование >>  Программирование с использованием ajax 

1 ... 39 40 41 [ 42 ] 43 44 45 ... 396


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

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

В частности, в настоящей главе рассматриваются следующие основные темы.

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

□ Передача данных в и из функций.

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

□ Подробное рассмотрение такой важной функции в С#-приложениях, как Main (). Здесь вы узнаете, как с помощью встроенного поведения этой функции можно пользоваться аргументами командной строки, которые позволяют передавать информацию в приложения во время их работы.

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

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

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

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



Практическое занятие

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

1. Создайте новое консольное приложение по имени Ch06Ex01 и сохраните его в каталоге С: \BegVCSharp\Chapter06.

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

class Program {

static void Write () {

Console. WriteLine ( Text output from function. ) ;

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

static void Main(string[] args) {

Write 0;

Console.ReadKey();

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

I fU#J C:/B gVCShanVChepl t)e:i eeEx01/..,

Рис. 6.1. приложение ChOSExOl в действии

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

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

static void Write() {

Console.WriteLine( Text output from function. );

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

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

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

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

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

Имена функций обычно пишутся в формате PascalCasing.

Код, определяющий функцию Write (), очень похож на другой код в приложении:

static void Main(string [ ] args) {



Это объясняется тем, что весь код, который доводилось писать до сих пор (кроме определений типов), был частью определенной функции, а именно - Main (), которая является для консольного приложения так называемой точкой входа. При выполнении любого приложения С# первым делом вызывается та содержащаяся в нем функция, которая выступает в роли точки входа, а при завершении выполнения этой функции завершается и работа всего приложения. Весь исполняемый код на С# должен обязательно иметь такую точку входа. Единственным отличием между функциями Main () и Write О (кроме содержащихся в них строк) является наличие внутри круглых скобок после имени функции Main некоторого кода. С помощью этого кода задаются параметры, о чем более подробно будет рассказываться чуть позже.

Как уже упоминалось ранее, и Main (), и Write () определяются с ключевыми словами static и void. Ключевое слово static связано с концепциями объектно-ориентированного программирования и потому более подробно будет описываться позже в книге. Пока необходимо запомнить лишь то, что оно должно обязательно присутствовать во всех функциях, которые предлагается создавать в приложениях, описываемых в настоящем разделе данной книги.

Ключевое слово void, однако, является более простым для объяснения. Оно служит для обозначения того, что функция не возвращает никакого значения. Чуть позже в этой главе обязательно будет показан тот код, который необходимо использовать в ситуации, если функция имеет возвращаемое значение.

Далее идет код, вызывающий функцию, который выглядит следующим образом:

Write О;

Здесь просто вводится имя функции, а за ним - круглые скобки без содержимого. При достижении программой во время выполнения этой точки, будет запускаться код, содержащийся внутри функции Write ().

Использование круглых скобок как в определении, так и в вызове функции, является обязательным. Если хотите, может£ попробовать удалить их, и код перестанет компилироваться.

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

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

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

string myString; myString = GetString ();

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

double myVal;

double multiplier = 5.3;

myVal = GetValO * multiplier;

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

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

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



1 ... 39 40 41 [ 42 ] 43 44 45 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика