Помощь в написании студенческих работ
Антистрессовый сервис

Методы c#. Программирование. 
Базовый курс с#

РефератПомощь в написанииУзнать стоимостьмоей работы

Как писал Никлаус Вирт, программы — это алгоритмы + структуры данных. Можно считать, что данные в C# — это поля объектов и статические поля классов. Алгоритмы (т. е. функциональность программ) представляются с помощью методов класса и методов его объектов. В языке C# методы не существуют вне классов или структур. Нестатические методы реализуют функциональность объектов. Статические методы… Читать ещё >

Методы c#. Программирование. Базовый курс с# (реферат, курсовая, диплом, контрольная)

Методы-процедуры и методы-функции

Как писал Никлаус Вирт, программы — это алгоритмы + структуры данных. Можно считать, что данные в C# — это поля объектов и статические поля классов. Алгоритмы (т. е. функциональность программ) представляются с помощью методов класса и методов его объектов. В языке C# методы не существуют вне классов или структур. Нестатические методы реализуют функциональность объектов. Статические методы обеспечивают функциональность классов и, тем самым, программы в целом. Каждый метод предназначен для выполнения действий, определяемых совокупностью входящих в метод (в его тело) операторов. Начиная с версии C# 7.0, в каждом методе может быть определен и использован другой (локальный) метод (локальные методы рассмотрены в параграфе 9.2).

Для определения методов и при их вызове в C# не используются никакие служебные слова. В «языках древности», таких как ФОРТРАН или КОБОЛ, и в некоторых более современных языках, не входящих в семейство С-образных, для обозначения подпрограмм, функций, процедур используются специальные термины, включаемые в список служебных слов соответствующего языка (FUNCTION, SUBROUTINE — в Фортране, procedure в Паскале и т. д.). Для вызова подпрограмм в Фортране используется конструкция со служебным словом CALL и т. п.

В языках, ведущих свое происхождение от языка С (C + +, Java, C# и др.) при определении функций и для обращения к ним специальные термины не применяются. Это в полной мере относится и к методам языка С#. Однако синтаксически и семантически методы C# можно разделить на процедуры и функции. Это деление не особенно жесткое и в ряде случаев метод может играть две роли — и процедуры, и функции.

В упрощенном варианте формат декларации метода, который может играть роль как процедуры, так и функции, можно представить так:

людификаторы_метода0t

тип_возвращаемого_значения имя_метода (спецификация_параметров).

{операторы_тела_метода}.

Индекс opt указывает на необязательность модификаторов метода.

Фигурные скобки ограничивают тело метода, часть объявления перед телом метода называют заголовком метода.

Минимальная конструкция, применяемая для обращения к методу:

имя_метода(список_аргументов).

В общем случае имя метода при обращении дополняется префиксами, указывающими на принадлежность метода пространству имен, конкретному классу или реально существующему объекту.

Метод-процедура отличается от метода-функции следующими свойствами:

  • • в качестве типа возвращаемого значения используется void, т. е. процедура не возвращает в точку вызова никакого результата;
  • • в теле процедуры может отсутствовать оператор возврата return, а когда он присутствует, то в нем нет выражения для вычисления возвращаемого значения. Если оператор return отсутствует, то точка выхода из процедуры (из метода) расположена за последним оператором тела метода;
  • • для обращения к методу-процедуре используется вызов метода в виде отдельного оператора:

имя_метода (список_аргументов);

Метод-функция всегда возвращает в точку вызова результат (некоторое значение). Типом возвращаемого значения служит тип ссылки или тип значения.

В теле функции всегда присутствует, по крайней мере, один оператор возврата:

return выражение;

где выражение определяет возвращаемый функцией результат.

Обращение к методу-функции может использоваться в качестве операнда подходящего выражения. Термин «подходящего» относится к необходимости согласования операндов в выражении по типам.

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

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

Исходные данные могут быть получены:

  • • через аппарат параметров метода;
  • • как глобальные по отношению к методу;
  • • от внешних устройств (потоки ввода, файловые потоки).

Результаты метод может передавать:

  • • в точку вызова как возвращаемое значение;
  • • в глобальные по отношению к методу объекты;
  • • внешним устройствам (потоки вывода, файловые потоки);
  • • через аппарат параметров метода.

Глобальными по отношению к методу объектами в C# являются статические поля класса, в котором, метод определен, и поля (статические) других классов, непосредственный доступ к которым имеет метод. Для нестатического метода в качестве глобальных данных доступны нестатические члены класса, т. е. члены объектов этого класса. Для локальных методов глобальными объектами являются параметры и локальные переменные того метода, в котором объявлен локальный метод. Обмены через глобальные объекты являются нарушением принципов инкапсуляции и обычно в реальных разработках не рекомендуются.

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

При определении метода в его заголовке размещается спецификация параметров (возможно пустая) — разделенная запятыми последовательность спецификаторов параметров. Каждый спецификатор параметра имеет вид:

модификатор тип_параметра имя_параметра

Модификатор параметра может отсутствовать или имеет одну из следующих форм: ref, out, params, this.

Если модификатор параметра отсутствует, то спецификатор параметра может включать умалчиваемое значение аргумента и принимает вид:

тип_параметра имя_параметра = выражение

Такие параметры в литературе называют необязательными (optional parameter). Выражение после знака присваивания определяет умалчиваемое значение аргумента и должно быть константным.

Ограничений на тип параметра не накладывается. Параметр может быть: предопределенного типа (базовые типы, строки, object); перечислением; структурой; классом; массивом; интерфейсом; делегатом.

Имя параметра — это идентификатор, который выбирает автор метода. Область видимости и время существования параметра ограничиваются заголовком и телом метода. Таким образом, параметры не видны и недоступны для кода, который не размещен в теле метода.

Стандарт C# отмечает существование четырех видов параметров:

  • • параметры, передаваемые по значениям;
  • • параметры, передаваемые по ссылкам (ref);
  • • выходные параметры (out);

• массив-параметр (params).

Параметры первых трех видов в Стандарте C# называют фиксированными параметрами. Спецификация фиксированного параметра включает необязательный модификатор ref или out, обозначение типа и идентификатор (имя параметра).

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

Модификаторы метода необязательны, но их достаточно много. Вот их список, пока без комментариев:

new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern, async.

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

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

// 0901.cs — Статические методы — процедура и функция using System;

using static System. Console; class Program {.

static void print (string line).

{

WriteLine («Длина строки: «+ line. Length);

WriteLine («Значение строки: «+ line);

>

static string change (string str).

{

char[] rev = str. ToCharArrayQ;

Array.Reverse (rev); return new string (rev);

}

static void Main ().

{

string numbers = «123 456 789» ;

print (numbers);

numbers = change (numbers);

print (numbers);

} }

Результат выполнения программы:

Длина строки: 9 Значение строки: 123 456 789.

Длина строки: 9.

Значение строки: 987 654 321.

В классе Program три статических метода. Метод print () получает исходные данные в виде строки-параметра и выводит длину и значение этой строки. В точку вызова метод print () ничего не возвращает — это процедура.

Метод change () — это функция. Он получает в качестве параметра строку, формирует ее «перевернутое» значение и возвращает в точку вызова этот результат.

В статическом методе Main () определена ссылка numbers на строку «123 456 789». В отдельном операторе вызван метод-процедура print (numbers), который выводит сведения о строке, именованной ссылкой numbers. Затем та же ссылка использована в качестве аргумента метода-функции change (). Обращение к этому методу размещено в правой части оператора присваивания, поэтому возвращаемый методом change () результат становится новым значением ссылки numbers. Повторное обращение к методу print () иллюстрирует изменения.

Показать весь текст
Заполнить форму текущей работой