Размер шрифта:
Методы (Руководство по программированию на C#) | Microsoft Docs

Методы (Руководство по программированию на C#) | Microsoft Docs

Методы (Руководство по программированию на C#)

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

В этом разделе описываются именованные методы.Дополнительные сведения об анонимных функциях см. в разделе Анонимные функции (Руководство по программированию на C#).

Сигнатуры метода

Методы объявляются в классе или в структуре путем указания уровня доступа, например public или private, необязательных модификаторов, например abstract или sealed, возвращаемого значения, имени метода и списка параметров этого метода. Все вместе эти элементы образуют сигнатуру метода.

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

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

Доступ к методам

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

Параметры методов ДЛЯ. аргументов

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

Передача по ссылке И. передача по значению

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

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

Создании ссылочный тип с помощью ключевого слова class, как показано в следующем примере.

Теперь, при передаче объекта, который основан на данном типе методу передается ссылка на объект. В следующем примере передает объект типа SampleRefType методу ModifyObject.

Примере выполняются по сути то же самое, что и предыдущий пример, в котором он передает аргумент по значению к методу. Но, поскольку ссылочный тип используется результат отличается. Изменение, выполненное в ModifyObject к полю value параметра, obj, также изменяется поле value аргумента, rt в методе TestRefType. Метод TestRefType отображает 33 как output.

Дополнительные сведения о том, как передавать ссылочные типы по ссылке и значением см. в разделе Передача параметров ссылочного типа (Руководство по программированию в C#) и Ссылочные типы (Справочник по C#).

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

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

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

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

Дополнительные сведения см. в разделе return (Справочник по C#).

Методы Async

Async с помощью функции можно вызывать асинхронные методы без использования явных обратных вызовов или вручную разделить ваш код через несколько методов или лямбда-выражения. Async - функция Visual Studio 2012 введены.

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

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

Метод асинхронного может иметь тип возвращаемого значения Task, Task или свободного места. Возвращаемый тип void используется в основном для указания обработчики событий, где возвращаемый тип void требуется. Async метода, который не возвращает значения нельзя подождать, а вызывающий объект свободн- возвращая метода не может перехватывать исключения, метод создает исключение.

В следующем примере DelayAsync метод async, который имеет тип возврата Task. DelayAsync имеет выписку return, возвращается целое число. Поэтому объявление метода DelayAsync должно иметь тип возвращаемого значения Task<int>. Поскольку возвращаемый тип Task<int>, вычисление выражения await в DoSomethingAsync создает целое число, как показано в следующей оператор: int result = await delayTask.

Метод startButton_Click async - пример метода, который имеет возвращаемый тип void. Поскольку метод DoSomethingAsync async, задачи для вызова DoSomethingAsync необходимо подождать, как показано в следующей выписку: await DoSomethingAsync();. Метод startButton_Click должно быть указано с модификатором async поскольку метод содержит выражение await.

Метод асинхронного не может объявлять все параметры ref или out, но он может вызвать методы, которые имеют такие параметры.

Итераторы

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

Итератор можно вызывать из кода клиента с использованием выписки foreach.

Дополнительные сведения см. в разделе Итераторы (C# и Visual Basic).

Спецификация языка C#

Дополнительные сведения см. в Спецификация языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

📎📎📎📎📎📎📎📎📎📎