Главная страница
Навигация по странице:

  • [модификаторы] тип_возвращаемого_значения название_метода ([параметры]) { // тело метода }

  • Чтобы использовать

  • Метод может возвращать значение

  • Выход из метода

  • Сокращенная запись методов

  • Разработка кода. Программа на языке C# должна содержать как минимум один метод метод Main, который является точкой входа в приложение


    Скачать 25.61 Kb.
    НазваниеПрограмма на языке C# должна содержать как минимум один метод метод Main, который является точкой входа в приложение
    АнкорРазработка кода
    Дата22.11.2020
    Размер25.61 Kb.
    Формат файлаdocx
    Имя файлаРазработка кода.docx
    ТипПрограмма
    #152626

    МДК 0502

    Методы.

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

    По сути метод - это именованный блок кода, который выполняет некоторые действия.

    Общее определение методов выглядит следующим образом:




    [модификаторы] тип_возвращаемого_значения название_метода ([параметры])

    {

        // тело метода

    }

    Модификаторы и параметры необязательны (поэтому записаны в квадратных скобках.

    Например, по умолчанию консольная программа на языке C# должна содержать как минимум один метод - метод Main, который является точкой входа в приложение:




    static void Main(string[] args)

    {

         

    }

    Ключевое слово static является модификатором. Далее идет тип возвращаемого значения. В данном случае ключевое слово void указывает на то, что метод ничего не возвращает.

    Далее идет название метода - Main и в скобках параметры - string[] args. И в фигурные скобки заключено тело метода - все действия, которые он выполняет. В данном случае метод Main пуст, он не содержит никаких операторов и по сути ничего не выполняет.

    Определим еще пару методов:




    using System;

     namespace HelloApp

    {

        class Program

        {

            static void Main(string[] args)

            {

            }

            static void Metod1()

            {

                Console.WriteLine("Привет");

            }

            static void Metod2()

            {

                Console.WriteLine("Пока");

            }

        }

    }

    В данном случае определены еще два метода: Metod1 и Metod2. Оба метода определены в рамках класса Program, они имеют модификатор static, а в качестве возвращаемого типа для них определен тип void. То есть данные методы ничего не возвращают, просто производят некоторые действия. И также оба метода не имеют никаких параметров, поэтому после названия метода указаны пустые скобки.

    Оба метода выводят на консоль некоторую строку. Причем для вывода на консоль методы используют другой метод, который определен в .NET по умолчанию - Console.WriteLine().

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

    Чтобы использовать методы Metod1 и Metod2 в программе, нам надо вызвать их в методе Main.

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




    название_метода (значения_для_параметров_метода);

    Например, вызовем методы Metod1 и Metod2:




    using System;

     namespace HelloApp

    {

        class Program

        {

            static void Main(string[] args)

            {

                Metod1();

                Metod2 ();

                 Console.ReadKey();

            }

             static void Metod1()

            {

                Console.WriteLine("Привет");

            }

            static void Metod2()

            {

                Console.WriteLine("Пока");

            }

        }

    }

    Консольный вывод программы:

    Привет

    Пока

    Преимуществом методов является то, что их можно повторно и многократно вызывать в различных частях программы. Например, в примере выше в двух методах для вывода строки на консоль используется метод Console.WriteLine.

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

    Если метод имеет любой другой тип, отличный от void, то такой метод обязан вернуть значение этого типа. Для этого применяется оператор return, после которого идет возвращаемое значение:




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

    Например, определим еще пару методов:




    static string Metod1()

    {

        return "Привет";

    }

    static int Raschot()

    {

        int x = 2;

        int y = 3;

        int z = x + y;

        return z;

    } Main Metod1 Metod2

    Метод Metod1 имеет тип string, следовательно, он должен возвратить строку. Поэтому в теле метода используется оператор return, после которого указана возвращаемая строка.

    Метод Raschot имеет тип int, следовательно, он должен возвратить значение типа int - целое число. Поэтому в теле метода используется оператор return, после которого указано возвращаемое число (в данном случае результат суммы переменных x и y).

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




    static int Raschot()

    {

        int x = 2;

        int y = 3;

        return x + y;

    }

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




    static string Metod1()

    {

        Console.WriteLine("Привет");

    }

    Также между возвращаемым типом метода и возвращаемым значением после оператора return должно быть соответствие. Например, в следующем случае возвращаемый тип - int, но метод возвращает строку (тип string), поэтому такое определение метода некорректно:




    static int Raschot()

    {

        int x = 2;

        int y = 3;

        return "5"; // ошибка - надо возвращать число

    }

    Результат методов, который возвращают значение, мы можем присвоить переменным или использовать иным образом в программе:




            static void Main(string[] args)

            {

                string message = Metod1();

                int sum = Raschot();

                 Console.WriteLine(message);  // Привет

                Console.WriteLine(sum);     // 5

                 Console.ReadKey();

            }

             static string Metod1()

            {

                return "Привет";

            }

            static int Raschot()

            {

                int x = 2;

                int y = 3;

                return x + y;

            }

    Метод Metod1 возвращает значение типа string. Поэтому мы можем присвоить это значение какой-нибудь переменной типа string: string message = Metod1();

    Второй метод - Raschot - возвращает значение типа int, поэтому его можно присвоить переменной, которая принимает значение этого типа: int sum = Raschot();.

    Выход из метода

    Оператор return не только возвращает значение, но и производит выход из метода. Поэтому он должен определяться после остальных инструкций. Например:




    static string Metod1()

    {

        return "Привет";

        Console.WriteLine("After return");

    }

    С точки зрения синтаксиса данный метод корректен, однако его инструкция Console.WriteLine("After return") не имеет смысла - она никогда не выполнится, так как до ее выполнения оператор return возвратит значение и произведет выход из метода.

    Однако мы можем использовать оператор return и в методах с типам void. В этом случае после оператора return не ставится никакого возвращаемого значения (ведь метод ничего не возвращает). Типичная ситуация - в зависимости от определенных условий произвести выход из метода:




    static void Proverka()

    {

        int hour = 23;

        if(hour > 22)

        {

            return;

        }

        else

        {

            Console.WriteLine("Привет");

        }

    }

    Сокращенная запись методов

    Если метод в качестве тела определяет только одну инструкцию, то мы можем сократить определение метода. Например, допустим у нас есть метод:




    static void Proverka ()

    {

        Console.WriteLine("Привет");

    }

    Мы можемего сократить следующим образом:




    static void Proverka () => Console.WriteLine("Привет");

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

    Подобным образом мы можем сокращать методы, которые возвращают значение:




    static string GetHello()

    {

        return "hello";

    }

    Анлогичен следующему методу:




    static string GetHello() => "hello";


    Задание:

    • Изучить изложенный материал.

    • Какие имена методов были использованы при изложении учебного материала?

    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;

    }


    написать администратору сайта