СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Методы языка C#

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Методы языка C#»

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

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

1

2

3

4

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

{

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

}

Модификаторы и параметры необязательны.

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

1

2

3

4

static void Main(string[] args)

{

     

}

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

using System;

 

namespace HelloApp

{

    class Program

    {

        static void Main(string[] args)

        {

             

        }

 

        static void SayHello()

        {

            Console.WriteLine("Hello");

        }

        static void SayGoodbye()

        {

            Console.WriteLine("GoodBye");

        }

    }

}

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

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

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

Вызов методов

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

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

1

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

Например, вызовем методы SayHello и SayGoodbye:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

using System;

 

namespace HelloApp

{

    class Program

    {

        static void Main(string[] args)

        {

            SayHello();

            SayGoodbye();

 

            Console.ReadKey();

        }

 

        static void SayHello()

        {

            Console.WriteLine("Hello");

        }

        static void SayGoodbye()

        {

            Console.WriteLine("GoodBye");

        }

    }

}

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

Hello

GoodBye

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

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

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

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

1

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

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

1

2

3

4

5

6

7

8

9

10

11

static string GetHello()

{

    return "Hello";

}

static int GetSum()

{

    int x = 2;

    int y = 3;

    int z = x + y;

    return z;

}

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

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

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

1

2

3

4

5

6

static int GetSum()

{

    int x = 2;

    int y = 3;

    return x + y;

}

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

1

2

3

4

static string GetHello()

{

    Console.WriteLine("Hello");

}

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

1

2

3

4

5

6

static int GetSum()

{

    int x = 2;

    int y = 3;

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

}

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

using System;

 

namespace HelloApp

{

    class Program

    {

        static void Main(string[] args)

        {

            string message = GetHello();

            int sum = GetSum();

 

            Console.WriteLine(message);  // Hello

            Console.WriteLine(sum);     // 5

 

            Console.ReadKey();

        }

 

        static string GetHello()

        {

            return "Hello";

        }

        static int GetSum()

        {

            int x = 2;

            int y = 3;

            return x + y;

        }

    }

}

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

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

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

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

1

2

3

4

5

static string GetHello()

{

    return "Hello";

    Console.WriteLine("After return");

}

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

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

1

2

3

4

5

6

7

8

9

10

11

12

static void SayHello()

{

    int hour = 23;

    if(hour 22)

    {

        return;

    }

    else

    {

        Console.WriteLine("Hello");

    }

}

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

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

1

2

3

4

static void SayHello()

{

    Console.WriteLine("Hello");

}

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

1

static void SayHello() = Console.WriteLine("Hello");

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

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

1

2

3

4

static string GetHello()

{

    return "hello";

}

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

1

static string GetHello() = "hello";