Разработка кода. Программа на языке C# должна содержать как минимум один метод метод Main, который является точкой входа в приложение
![]()
|
МДК 0502 Методы. И так, что же такое метод? В контексте объектно-ориентированного программирования, метод – это подпрограмма. А подпрограмма, в свою очередь – это фрагмент программы, который написать нужно один раз, а использовать его можно многократно (для выполнения однотипных действий). Это довольно удобно по нескольким причинам, например, можно реализовать определенный алгоритм один раз, хорошо его отладить, и быть уверенным в правильности его работы применяя его в дальнейшем многократно. Да и использование подпрограмм, значительно сокращает объем исходного кода проекта. По сути метод - это именованный блок кода, который выполняет некоторые действия. Общее определение методов выглядит следующим образом:
Модификаторы и параметры необязательны (поэтому записаны в квадратных скобках. Например, по умолчанию консольная программа на языке C# должна содержать как минимум один метод - метод Main, который является точкой входа в приложение:
Ключевое слово static является модификатором. Далее идет тип возвращаемого значения. В данном случае ключевое слово void указывает на то, что метод ничего не возвращает. Далее идет название метода - Main и в скобках параметры - string[] args. И в фигурные скобки заключено тело метода - все действия, которые он выполняет. В данном случае метод Main пуст, он не содержит никаких операторов и по сути ничего не выполняет. Определим еще пару методов:
В данном случае определены еще два метода: Metod1 и Metod2. Оба метода определены в рамках класса Program, они имеют модификатор static, а в качестве возвращаемого типа для них определен тип void. То есть данные методы ничего не возвращают, просто производят некоторые действия. И также оба метода не имеют никаких параметров, поэтому после названия метода указаны пустые скобки. Оба метода выводят на консоль некоторую строку. Причем для вывода на консоль методы используют другой метод, который определен в .NET по умолчанию - Console.WriteLine(). Но если мы запустим данную программу, то мы не увидим никаких сообщений, которые должны выводить методы Metod1 и Metod2. Потому что стартовой точкой является метод Main. При запуске программы выполняется только метод Main и все операторы, которые составляют тело этого метода. Все остальные методы не выполняются. Чтобы использовать методы Metod1 и Metod2 в программе, нам надо вызвать их в методе Main. Для вызова метода указывается его имя, после которого в скобках идут значения для его параметров (если метод принимает параметры).
Например, вызовем методы Metod1 и Metod2:
Консольный вывод программы: Привет Пока Преимуществом методов является то, что их можно повторно и многократно вызывать в различных частях программы. Например, в примере выше в двух методах для вывода строки на консоль используется метод Console.WriteLine. Метод может возвращать значение, какой-либо результат. В примере выше были определены два метода, которые имели тип void. Методы с таким типом не возвращают никакого значения. Они просто выполняют некоторые действия. Если метод имеет любой другой тип, отличный от void, то такой метод обязан вернуть значение этого типа. Для этого применяется оператор return, после которого идет возвращаемое значение:
Например, определим еще пару методов:
Метод Metod1 имеет тип string, следовательно, он должен возвратить строку. Поэтому в теле метода используется оператор return, после которого указана возвращаемая строка. Метод Raschot имеет тип int, следовательно, он должен возвратить значение типа int - целое число. Поэтому в теле метода используется оператор return, после которого указано возвращаемое число (в данном случае результат суммы переменных x и y). После оператора return также можно указывать сложные выражения, которые возвращают определенный результат. Например:
При этом методы, которые в качестве возвращаемого типа имеют любой тип, отличный от void, обязательно должны использовать оператор return для возвращения значения. Например, следующее определение метода некорректно:
Также между возвращаемым типом метода и возвращаемым значением после оператора return должно быть соответствие. Например, в следующем случае возвращаемый тип - int, но метод возвращает строку (тип string), поэтому такое определение метода некорректно:
Результат методов, который возвращают значение, мы можем присвоить переменным или использовать иным образом в программе:
Метод Metod1 возвращает значение типа string. Поэтому мы можем присвоить это значение какой-нибудь переменной типа string: string message = Metod1(); Второй метод - Raschot - возвращает значение типа int, поэтому его можно присвоить переменной, которая принимает значение этого типа: int sum = Raschot();. Выход из метода Оператор return не только возвращает значение, но и производит выход из метода. Поэтому он должен определяться после остальных инструкций. Например:
С точки зрения синтаксиса данный метод корректен, однако его инструкция Console.WriteLine("After return") не имеет смысла - она никогда не выполнится, так как до ее выполнения оператор return возвратит значение и произведет выход из метода. Однако мы можем использовать оператор return и в методах с типам void. В этом случае после оператора return не ставится никакого возвращаемого значения (ведь метод ничего не возвращает). Типичная ситуация - в зависимости от определенных условий произвести выход из метода:
Сокращенная запись методов Если метод в качестве тела определяет только одну инструкцию, то мы можем сократить определение метода. Например, допустим у нас есть метод:
Мы можемего сократить следующим образом:
То есть после списка параметров ставится знак равно и больше чем, после которого идет выполняемая инструкция. Подобным образом мы можем сокращать методы, которые возвращают значение:
Анлогичен следующему методу:
Задание: Изучить изложенный материал. Какие имена методов были использованы при изложении учебного материала? Main Metod1 Metod2 Raschot Proverka GetHello Сформировать и записать код создания и использования метода, который запрашивает текстовое значение и выводит его в консоль. static void Main() { string message = text(); Console.WriteLine(message); Console.ReadKey(); } static string text() { return "Добрый день!"; } 2. Сформировать и записать код создания и использования метода, который рассчитывает произведение двух целых чисел и выводит результат в консоль. static void Main() { double sum = Raschot(); Console.WriteLine("число"); Console.WriteLine(sum); Console.ReadKey(); } static double Raschot() { double x, y; Console.WriteLine("введите x"); x = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("введите y"); y = Convert.ToDouble(Console.ReadLine()); return x * y; } 3. Сформировать программный код расчета площади кольца между окружностями радиусов R1 и R2 с использованием метода расчета площади круга ( площадь круга πR2). static void Main() { double pl1 = Raschot(); double pl2 = Raschot2(); Console.Write("Площадь первого круга "); Console.WriteLine(pl1); Console.Write("Площадь второго круга "); Console.WriteLine(pl2); Console.ReadKey(); Console.WriteLine("Площадь кольца равна "+(pl1 - pl2)); Console.ReadKey(); } static double Raschot() { double x1; Console.Write("введите радиус первого круга "); x1 = Convert.ToDouble(Console.ReadLine()); return 3.14 * x1 *x1; } static double Raschot2() { double x2; Console.Write("введите радиус второго круга "); x2 = Convert.ToDouble(Console.ReadLine()); return 3.14 * x2 *x2; } |