Как вызвать void функцию c
Если переменные хранят некоторые значения, то методы содержат собой набор инструкций, которые выполняют определенные действия. По сути метод — это именованный блок кода, который выполняет некоторые действия.
Общее определение методов выглядит следующим образом:
Модификаторы и параметры необязательны.
Ранее мы уже использовали как минимум один метод — Console.WriteLine() , который выводит информацию на консоль. Теперь рассмотрим, как мы можем создавать свои методы.
Определение метода
Определим один метод:
Здесь определен метод SayHello , который выводит некоторое сообщение. К названиям методов предъявляются в принципе те же требования, что и к названиям переменных. Однако, как правило, названия методов начинаются с большой буквы.
Перед названием метода идет возвращаемый тип данных. Здесь это тип void , который указыает, что фактически ничего не возвращает, он просто производит некоторые действия.
После названия метода в скобках идет перечисление параметров. Но в данном случае скобки пустые, что означает, что метод не принимает никаких параметров.
После списка параметров в круглых скобках идет блок кода, который представляет набор выполняемых методом инструкций. В данном случае блок метода SayHello содержит только одну инструкцию, которая выводит строку на консоль:
Но если мы запустим данный проект, то мы не увидим никакой строки, которую должен выводить метод SayHello. Потому что после определения метод еще надо вызвать, чтобы он выполнил свою работу.
Вызов методов
Чтобы использовать метод SayHello, нам надо его вызвать. Для вызова метода указывается его имя, после которого в скобках идут значения для его параметров (если метод принимает параметры).
Например, вызов метода SayHello будет выглядеть следующим образом:
Поскольку метод не принимает никаких параметров, то после названия метода идут пустые скобки.
Объединим определение и вызов метода:

Консольный вывод программы:
Преимуществом методов является то, что их можно повторно и многократно вызывать в различных частях программы. Например, в примере выше два раза вызывается метод SayHello.
При этом в данном случае нет разницы, сначала определяется метод, а потом вызывается или наоборот. Например, мы могли бы написать и так:
Определим и вызовем еще несколько методов:
Здесь определены три метода SayHelloRu() , SayHelloEn() и SayHelloFr() , которые также имеют тип void , не принимают никаких параметров и также выводит некоторую строку на консоль. Условно говоря, они выводят приветствие на определенном языке.
В конструкции switch проверяется значение переменной language , которая условно хранит код языка, и в зависимости от ее значения вызывается определенный метод. Так, в данном случае на консоль будет выведено
Сокращенная запись методов
Если метод в качестве тела определяет только одну инструкцию, то мы можем сократить определение метода. Например, допустим у нас есть метод:
Мы можем его сократить следующим образом:
То есть после списка параметров ставится оператор => , после которого идет выполняемая инструкция.
C#. Понятие метода. Примеры методов в классах. Возврат из метода. Оператор return. Методы без параметров. Ключевое слово void
Понятие метода. Примеры методов в классах. Возврат из метода. Оператор return . Методы без параметров. Ключевое слово void
Содержание
- 1. Что такое метод в классе? Определение метода в классе
- 2. Какие имена запрещается давать методам?
- 3. Общая форма определения метода в классе
- 4. Какое назначение имеет оператор return в теле метода?
- 5. Примеры методов в классах
- 6. Аргументы и формальные параметры метода
- 7. Как параметры передаются в метод? Синтаксис описания параметров метода
- 8. Использование ключевого слова void в параметрах методов
- 9. Что значит термин «недоступный код» в методе?
- 10. Пример, демонстрирующий различные способы возврата экземпляра класса из метода
Поиск на других ресурсах:
1. Что такое метод в классе? Определение метода в классе
Метод (функция) – это фрагмент подпрограммы, которая имеет имя. По этому имени можно вызывать подпрограмму (метод) один или несколько раз. Вместо имени будет подставляться тело подпрограммы (метода). Имя метода целесообразно давать таким, чтобы легко можно было распознать его функцию в программе.
Кроме данных (переменных) классы могут содержать и методы. Методы делают над данными некоторые операции (некоторую работу). Во многих случаях методы представляют доступ к данным класса. С помощью методов класса происходит взаимодействие класса с другими частями программы или другими классами.
Методы дополняют класс дополнительными функциональными возможностями. Как правило, каждый метод выполняет одну функцию.
⇑
2. Какие имена запрещается давать методам?
Имя метода может быль любым, которое соответствует правилам использования идентификаторов в C#. Однако не все имена можно использовать как имя метода.
В качестве имени метода запрещается задавать:
- имя Main() . Это имя точки входа в программу на C#, то есть из метода Main() начинается выполнение программы. Это имя зарезервировано;
- имена ключевых слов C#.
⇑
3. Общая форма определения метода в классе
В общем реализация метода в классе имеет следующий вид:
- MethodName – имя метода, который объявляется. По этому имени можно вызвать метод из класса или программы. При вызове метода обязательно указываются параметры метода, которые он получает;
- access – модификатор, который определяет доступ к методу из разных частей программы. Модификатор доступа может быть private , protected , public . Модификатор доступа может отсутствовать, в этом случае метод считается закрытым ( private );
- return_type – тип, возвращаемый методом. Если метод не возвращает значения, указывается тип void ;
- parameter_list – список параметров, который получает метод. Метод может не иметь параметров. В этом случае в скобках ничего не указывается.
⇑
4. Какое назначение имеет оператор return в теле метода?
Оператор return предназначен для возврата значения из метода. Если метод возвращает какое-то значение, то вызов оператора return есть обязательным.
Оператор return имеет две формы. Первая форма используется, когда метод возвращает значение. Вторая форма, когда метод не возвращает значения, то есть возвращает тип void.
Первая форма оператора return имеет следующий вид:
где value – значение, возвращаемое методом. Тип value должен быть совместимым с типом, который возвращает метод.
Вторая форма используется, когда метод не возвращает значения ( void ). В этом случае оператор return имеет вид:
В методе, который не возвращает значения, указывать оператор return не обязательно.
⇑
5. Примеры методов в классах
Пример 1. В примере реализуется класс DemoString . В классе объявляется:
- внутренняя переменная s типа string , которая есть строкой;
- конструктор класса без параметров. Инициализирует строку s пустым значением;
- конструктор класса с параметром, который инициализирует строку s ;
- метод IsLetter() , определяющий есть ли символ c в строке s . Символ c задается входным параметром метода. Метод возвращает значение логического типа bool ;
- метод Reverse() , принимающий входным параметром строку s и возвращающий реверсное значение этой строки.
Текст реализации класса следующий
Использование класса DemoString может быть следующим:
Пример 2. Объявляется класс Triangle , который содержит:
- три внутренние переменные с именами a , b , c ;
- параметризированный конструктор класса, получающий три параметра;
- внутренний метод класса GetArea() , определяющий площадь треугольника по его сторонам a , b , c . Метод не получает параметров. Метод возвращает значение площади треугольника или 0, если по сторонам a , b , c нельзя построить треугольник;
- внутренний метод класса без параметров IsTriangle() . Метод определяет, можно ли по трем сторонам a , b , c построить треугольник: сумма двух любых сторон должна быть больше третьей стороны. Метод возвращает логическое значение типа bool .
Текст объявления класса имеет следующий вид:
Использование класса Triangle и вызов методов класса может быть следующим:
⇑
6. Аргументы и формальные параметры метода
Аргументы метода – это значения которые передаются в метод во время вызова этого метода из другого метода или программного кода.
Формальные параметры метода – это переменные, которые получены методом как параметры и используются в этом методе. Формальные параметры метода описываются в скобках. Формальные параметры получают значения из аргументов при вызове метода.
Например. Пусть задан метод, который находит сумму цифр целого числа d , которое есть входным параметром
При вызове такого метода ему передается аргумент x , значение которого равно -2398. Этот аргумент передается формальному параметру d в методе Sum() .
⇑
7. Как параметры передаются в метод? Синтаксис описания параметров метода
Любой метод может получать параметры. Параметры необходимы методу для того, чтобы проводить над ними некоторые вычисления. Параметры метода задаются в скобках через запятую. Общая форма списка, состоящего из N параметров метода имеет вид:
Общая форма метода, который получает N параметров имеет вид:
- return_type – тип, который возвращается методом MethodName ;
- type1 , type2 , … typeN – типы параметров с именами param1 , param2 , …, paramN .
⇑
8. Использование ключевого слова void в параметрах методов
Если метод не получает параметров, то запись метода выглядит следующим образом:
где return_type – тип, который возвращает метод с именем MethodName() .
Например. Объявляется метод, который возвращает число Pi .
Если метод ничего не возвращает, то вместо типа указывается слово void
где parameter_list – список параметров метода с именем MethodName , которые он получает.
Если метод не возвращает и не получает параметров, то общий вид такого метода следующий:
Пример. Объявляется метод, который не получает и не возвращает ничего. В теле метода выводится сообщение «Hello world!» для консольных приложений.
⇑
9. Что значит термин «недоступный код» в методе?
Недоступный код – это часть кода метода, который никогда не будет выполнен. Недоступный код есть ошибкой программиста. Если в методе есть недоступный код, то компилятор выдает предупредительное сообщение соответствующего содержания.
Например. Ниже продемонстрирован метод, в котором есть недоступный (неиспользованный) код.
⇑
10. Пример, демонстрирующий различные способы возврата экземпляра класса из метода
В примере продемонстрированы различные способы возврата объекта класса из метода. По подобному примеру можно разрабатывать собственные методы, которые возвращают текущий экземпляр класса.
Задан класс Complex , реализующий комплексное число. В классе объявляются:
- две внутренние переменные real , imag ;
- два конструктора;
- метод GetRI() , возвращающий значение внутренних переменных real и imag как out-параметров;
- метод SetRI() , который с помощью параметров устанавливает новые значения внутренних переменных real , imag ;
- метод GetComplex() , возвращающий текущий объект (экземпляр) класса Complex с помощью оператора return ;
- метод GetComplex2() , возвращающий текущий объект (экземпляр) класса как out-параметр.В другом классе Program в функции main() продемонстрировано использование класса Complex и методов GetComplex() , GetComplex2() . Также в классе Program объявляется метод GetComplex3() , возвращающий экземпляр класса Complex .
Текст всего программного модуля, созданного по шаблону Console Application следующий
Из вышеприведенного примера видно, что продемонстрировано возврат объекта класса Complex с помощью трех методов (способов):
How do I call a public void in c#
I’m just starting out and I have a question. How do I call a public void?
![]()
2 Answers 2
If it’s a non-static class, you need to instantiate it first. Then to call its void methods, justCallThem().
You just need to call the method by the class object reference.
![]()
-
The Overflow Blog
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.3.11.43304
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Методы в C#
Методы в C#, как и практически в любом другом языке программирования — это именованные участки кода, в котором выполняется ряд операций. С методами мы так или иначе сталкивались при изучении возможностей C# с самого начала. Пишем мы первую программу, выводящую на экран строку «Hello world» или изучаем циклы и способы сортировки массивов — мы вызываем в нашей программе хотя бы один метод. И сегодня мы попробуем более детально изучить методы в C#, а также научимся их вызывать.
Определение методов в C#
В самом общем случае, определение метода в C# выглядит следующим образом:
обязательными элементами для определения метода в C# являются: тип возвращаемого значения и имя метода. Самый первый пример метода, который мы могли видеть в C# — это метод Main() , который является и точкой входа для нашего консольного приложения. Рассмотрим описание этого метода:
static — это модификатор. О том, что он обозначает, мы поговорим позднее, когда доберемся до работы с классами и объектами в C#.
void — тип возвращаемого значения. Это ключевое слово используется для того, чтобы указать, что метод не возвращает ничего.
Main — это имя метода.
string[] args — это единственный параметр метода — массив строк.
В фигурных скобках Visual Studio создала нам тело метода, состоящее по умолчанию всего из одной строки — вывод в консоль «Hello world».
Попробуем написать свой первый собственный метод C#. Можно было бы ограничиться стандартными примерами первых методов, типа расчёта площади круга или сложения двух чисел, но мы сделаем по-другому — мы немного улучшим программу сортировки массива, которую написали в прошлый раз.
Учимся определять собственные методы в C#
Посмотрим на исходный код нашей программы:
здесь у нас в методе Main() чего только не напихано — и вывод массива на экран и сортировка выбором. Обычно, участок кода выделяется в отдельный метод, если он (код) повторяется в программе многократно или необходимо выделить решение какой-либо задачи. В нашем же случае в программе можно выделить два отдельных метода:
- Метод вывода массива на экран (этот код у нас повторяется дважды — перед сортировкой и после сортировки)
- Метод, который будет сортировать массив.
Начнем с метода вывода массива на экран. Название метода должно максимально отражать его суть — пусть название метода будет PrintArray . Далее, что будет возвращать наш метод? В данном случае, ничего возвращать не требуется, поэтому будем использовать void . И, наконец, параметры. Задача метода — вывести на экран массив. Чтобы можно было в дальнейшем многократно использовать наш метод, в качестве параметра метод должен принимать какой-либо массив. Итого, получается вот такое описание метода:
В теле метода мы должны разместить код, который выводит массив на экран, то есть весь метод целиком, включая описание и тело метода у нас должны получиться вот такими:
Здесь мы в цикле foreach перебираем массив, переданный нам в качестве параметра и выводим значения на экран в виде строки.
Второй метод — это метод сортировки массива. Опять же, имя — так как у нас используется сортировка выбором, то пусть метод будет называться SelectSort . Возвращаемое значение также оставляем пустым ( void ), так как перед нами не стоит задачи хранить оба варианта массива (сортированный и несортированный). В качестве параметра будет выступать, опять же массив целых чисел. Весь метод должен выглядеть вот так:
Теперь у нас есть два метода и, если вы все сделали как показано выше, то Visual Studio напишет имена методов серым цветом и предложит удалить неиспользуемые члены класса Program . Выглядит это примерно так:

В данном случае, студия права — зачем нам методы, которые нигде не используются? Давайте вызовем наши методы в программе.
Вызов методов C#
Чтобы вызвать метод C# необходимо написать его имя и, при необходимости, в круглых скобках передать методу необходимые параметры. Методы мы будем вызывать внутри метода Main() вот так:
Теперь можно запустить программу и убедиться, что всё работает ровно так, как и в прошлый раз, НО при этом можно назвать следующие преимущества использования методов в C#:
- Методы можно многократно использовать в программе (например, PrintArray мы вызвали дважды)
- Выделение частей кода в отдельные методы позволяет сделать код более понятным (согласитесь, что изучить код метода на 10-50 строк намного проще, чем изучать «портянку» на 100500 строк)
- Использование методов позволяет значительно упростить дальнейшее сопровождение всего проекта. Например, если мы заходим, чтобы значения массива выводились не через пробел, а через запятую, то нам будет достаточно переписать всего один метод, а не искать по всему коду где массив выводится на экран. На небольших проектах это преимущество не совсем очевидно, но, когда вы имеете дело с проектом на десятки и сотни тысяч строк кода, то использование методов становится уже жизненно необходимым (представьте себе программу, хотя бы на 1000 строк кода всего с одним методом…жуть).
Возвращаемые методами C# значения
До сих пор мы имели дело с методами, которые не возвращают значений (с void в качестве возвращаемого значения). Что делать если метод должен вернуть какое-либо значение, например, если мы хотим узнать сколько замен провел наш метод SelectSort , чтобы отсортировать массив по возрастанию? Для этого наш метод должен:
- в качестве возвращаемого значения уже иметь не void , а число int (количество перестановок у нас измеряется целыми числами — не может быть 1,5 перестановки)
- использовать в теле метода оператор return .
Оператор return завершает выполнение текущего метода и возвращает значение из этого метода. Вызов оператора return выглядит следующим образом:
expression — это значение, которое должен вернуть метод. Если оператор в коде выглядит вот так:
то метод не вернет ничего, но при этом завершит свою работу. Давайте перепишем наш метод SelectSort , чтобы получать не только отсортированный массив, но и количество перестановок, которые были сделаны.
Теперь наша программа сортировки массива станет ещё более информативной. Метод SelectSort можно вызвать вот так:
Здесь мы одной строкой и сортируем массив и выводим в консоль количество перестановок. Результат работы такой программы в консоли будет выглядеть следующим образом:
9 8 7 6 5 4 3 2 1 0
Количество перестановок в массива: 5
0 1 2 3 4 5 6 7 8 9
Методы C#, возвращающие несколько значений
Что, если наш метод должен вернуть не одно, а сразу несколько значений? Опять же,возвращаясь к нашему методу SelectSort — что делать, если нам необходимо вернуть не только количество замен, но и количество сравнений элементов (количество итераций внутреннего цикла for )? Такая задача может решаться несколькими способами, я же покажу лишь один из них — одно значение (количество перестановок) мы будем передавать в качестве возвращаемого значения, а второе — через параметр метода. Сделать это можно, объявив метод следующим образом:
Обратите внимание на то, что написано в круглых скобках после запятой. Ключевое слово out используется для передачи аргументов (параметров) по ссылке. Есть также аналогичное ключевое слово ref , но ref требует, чтобы перед передачей в метод переменная должна была инициализирована, out же этого не требует. Теперь наш метод принимает два параметра один из которых обязательно должен быть переменной. То есть, мы можем вызвать наш метод вот так:
оба параметра — переменные . А можем вот так:
здесь мы передаем в первом параметре значение — массив целых чисел, а во втором переменную (правда, то как будет выглядеть сортированный массив мы уже не увидим). Но вот такой вызов метода уже не пройдет:
Здесь я попытался передать не переменную, а значение и компилятор C# выдал ошибку:
Надеюсь, понятно. Теперь вернемся к нашему методу и перепишем его следующим образом:
Теперь наш метод C# возвращает уже не одно, а два значения: количество перестановок и количество сравнений, а нашу программу можно переписать следующим образом:
Вывод консоли станет ещё более информативным:
9 1 5 6 8 90 -10 13 44 11 54
Количество перестановок в массива: 4. Сравнений 66
-10 1 5 6 8 9 11 13 44 54 90
Как видите, обеспечить возврат нескольких значений одним методом — это не такая уж и проблема. Как я сказал, эту же задачу можно решить несколькими способами, но об этих способах нам пока знать рановато — рассмотрим позднее.
Выход из метода
Выше я уже рассказал, что в методах может использоваться оператор return , который обеспечивает выход из метода и возврат значения метода в вызывающий метод. При этом, оператор return может использоваться и в методах с типом void для прерывания работы метода. Например, следующий код с точки зрения синтаксиса полностью верный:
Но, при этом, строка с вызовом WriteLine абсолютно бесполезна так как до этой строки мы никогда не дойдем — оператор return заставит нас выйти из метода сразу же, не достигая конца тела метода. Поэтому на будущее стоит запомнить,что return необходимо располагать именно в том месте где действительно необходимо обеспечить выход из метода, например, перед последней фигурной скобкой.
Сокращенная запись методов в C#
Если тело метода содержит всего одну инструкцию, то допускается сокращенная запись такого метода. Например, пусть у нас есть такой метод:
тело метода содержит всего одну инструкцию — вывод сообщения в консоль. В этом случае, мы можем сократить наш метод до следующей записи:
то есть, вместо фигурных скобок мы используем оператор => и далее сразу пишем содержимое тела метода (единственную инструкцию).
В чем различие между методом, функцией и процедурой
В различных источниках информации, кроме названия «метод» можно встретить также и такие названия как «функция» и «процедура». В чем же принципиальное отличие метода, функции и процедуры? Применительно к C#, в отличие, например, от Delphi/Pascal — это, скорее, философский вопрос. На мой взгляд, в C# все эти три понятия тождественны.
Обычно, функцию определяют так: функция — это метод, который возвращает какое-либо значение. Например, наш метод SelectSort возвращает значение int . То есть, технически мы можем сказать, что SelectSort — это функция.
В свою очередь, процедура — это метод, который не возвращает ничего. Опять же, чисто технически, можно сказать, что наш метод PrintArray — это процедура. Но, если обратить внимание на справочник по C#, то там « void — указывает тип возвращаемого значения для метода, который не возвращает значения.» Вот такая вот философская задача. То есть вроде как и нет возвращаемого значения, но всё же тип возвращаемого значения — void.
Поэтому, можно констатировать следующее: метод — это обобщенное название и функций и процедур, а в C# все эти три понятия тождественны, но за одним исключением — в отдельную группу методов выделяются как раз-таки «локальные функции«, о которых мы поговорим позднее.
Итого
Сегодня мы познакомились в общих чертах с методами C#, научились определять собственные методы, обеспечивать возврат из метода одного и нескольких значений, а также значительно улучшили нашу программку для сортировки массива методом вставок. К работе с методами мы будем возвращаться ещё неоднократно, так что, эту информацию постараемся запомнить как можно лучше.