Содержание
Методы в 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#.