Методы в C#

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Методы в C# — это именованные блоки кода, в которых выполняется ряд операций. С методами мы так или иначе сталкивались при изучении возможностей C# с самого начала.  Пишем мы первую программу, выводящую на экран строку «Hello world» или изучаем циклы и способы сортировки массивов — мы вызываем в нашей программе хотя бы один метод.  И сегодня мы попробуем более детально изучить методы в C#, а также научимся их вызывать.

Определение методов в C#

В самом общем случае, определение метода в C# выглядит следующим образом:

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

обязательными элементами для определения метода в C# являются: тип возвращаемого значения и имя метода. Самый первый пример метода, который мы могли видеть в C# — это метод Main(), который является и точкой входа для нашего приложения. Рассмотрим описание этого метода:

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");
}
  • static — это модификатор. О том, что он обозначает, мы поговорим позднее, когда доберемся до работы с классами и объектами в C#.
  • void — тип возвращаемого значения. Это ключевое слово используется для того, чтобы указать, что метод не возвращает ничего.
  • Main — это имя метода.
  • string[] args— это единственный параметр метода — массив строк.

В фигурных скобках Visual Studio создала нам тело метода, состоящее по умолчанию всего из одной строки — вывод в консоль «Hello world», что, кстати, также является вызовом метода класса Console.

Попробуем написать свой первый собственный метод C#.

Первый собственный метод в C#

В процессе работы с консольными приложениями нам часто приходится выводить какие-то данные в консоль. Давайте напишем отдельный метод, который будет выводить в консоль приглашение пользователю что-либо ввести (далее, мы этот метод доработаем):

void WriteText(string text)
{ 
    Console.WriteLine(text);
}

здесь мы определили тип возвращаемого значения как void — метод ничего не возвращает. Далее идёт название метода WriteText, а в круглых скобках перечень параметров — наш метод принимает всего один параметр — строку, которую необходимо вывести в консоль. В фигурных скобках содержится всего одна инструкция, которую выполняет метод — выводит в консоль заданную в параметрах строку.

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

Чтобы вызвать метод C# необходимо написать его имя и, при необходимости, в круглых скобках передать методу необходимые параметры. Например, изменим код Main() приложения следующим образом:

namespace FirstMethod
{
    internal class Program
    {
        static void WriteText(string text)
        { 
            Console.WriteLine(text);
        }

        static void Main(string[] args)
        {
            //Console.WriteLine("Hello, World!");
            WriteText("Привет, мир!");
            WriteText("Это наш первый метод C#");
        }
    }
}

Здесь мы дважды вызываем метод WriteText(), чтобы вывести в консоль две строки:

Привет, мир!
Это наш первый метод C#

В этом, кстати, кроется преимущество методов — мы можем вызывать код, содержащийся в методах, многократно и в любых частях приложения (при наличии соответствующих модификаторов доступа, конечно). Также, следует упомянуть, что в C# нет принципиальной разницы идёт ли вначале вызов метода или его определение. Например, мы могли бы переписать наш пример так:

namespace FirstMethod
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Console.WriteLine("Hello, World!");
            WriteText("Привет, мир!");
            WriteText("Это наш первый метод C#");
        }

        static void WriteText(string text)
        {
            Console.WriteLine(text);
        }
    }
}

В данном случае метод WriteText() находится ниже, чем его вызов.

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

Если метод выполняет всего одну инструкцию, то допускается его сокращенная запись, например, определим такой метод:

static void WriteNumber(int num) => Console.WriteLine(num);

так как метод выполняется всего одну инструкцию, то за списком параметров ставится специальный оператор => и далее пишется единственная инструкция метода.

Пример метода C#

Приведенный выше пример метода, возможно, не в полной мере отражает смысл использования методов в C#. Давайте поэкспериментируем с методами в C# и разберемся с преимуществами, которые несёт их использование в C#. Например, напишем метод, которые будет выводить в консоль разноцветный текст:

namespace FirstMethod
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Console.WriteLine("Hello, World!");
            WriteText("Привет, мир!");
            WriteText("Это наш первый метод C#");
            WriteColorText("А это красный текст", ConsoleColor.Red);
            WriteText("Это снова белый цвет");
            WriteColorText("А это зеленый текст", ConsoleColor.Green);
        }

        static void WriteText(string text)
        {
            Console.WriteLine(text);
        }

        static void WriteColorText(string text, ConsoleColor color)
        { 
            ConsoleColor oldColor = Console.ForegroundColor; //запоминаем текущий увет текста
            Console.ForegroundColor = color; //устанавливаем новый цвет текста
            WriteText(text); //выводим текст в консоль
            Console.ForegroundColor = oldColor; //возвращаем старый цвет
        }
    }
}

Здесь у нас уже целых три метода. С первыми двумя — Main() и WriteText() мы уже знакомы. Посмотрим на третий — WriteColorText().  Как было сказано выше, методы могут вызываться в любой части программы и этим мы и воспользовались вызвали один наш метод внутри другого:

WriteText(text); //выводим текст в консоль

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

А теперь рассмотрим ещё одно преимущество методов, которое можно сформулировать так: методы позволяют сократить или полностью избавиться от повторяющихся частей кода. Чтобы увидеть это преимущество в деле, давайте перепишем наше приложение так, чтобы оно не использовало никаких методов и делало ровно то же самое что на рисунке выше. Вот как бы выглядел такой код:

namespace FirstMethod
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Привет, мир!");
            Console.WriteLine("Это наш первый метод C#");
            ConsoleColor oldColor = Console.ForegroundColor; //запоминаем текущий цвет текста
            Console.ForegroundColor = ConsoleColor.Red; //устанавливаем новый цвет текста
            Console.WriteLine("А это красный текст");
            Console.ForegroundColor = oldColor; //возвращаем старый цвет
            Console.WriteLine("Это снова белый цвет");
            Console.ForegroundColor = ConsoleColor.Green; //устанавливаем новый цвет текста
            Console.WriteLine("А это зеленый текст");
            Console.ForegroundColor = oldColor; //возвращаем старый цвет
        }
    }
}

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

Итого

Сегодня мы познакомились в общих чертах с методами C#, научились определять собственные методы, разобрались с тем, какие преимущества несет в себе использование методов в C#. На этом, тема методов не завершается и в следующих частях мы более подробно разберемся с устройством методов C#.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии