Какой оператор возвращает значение из метода
Перейти к содержимому

Какой оператор возвращает значение из метода

  • автор:

Что такое return в C#?

Оператор return используется в функциях для возвращения данных после выполнения работы самой функции.

Если функция должна обработать какие-то данные и потом вернуть их, то для возвращения этих данных необходим этот оператор. Рассмотрим все на примере:

public static void Main (string[] args) < int res = some_test(4, 6, 1); Console.WriteLine(res); >public static int some_test(int a, int b, int c) < // Функция с 3 параметрами return a + b + c; // Функция возвращает результат суммы чисел >

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

Кроме того, он также используется в циклах для выхода из них. В циклах он выполняет ту же роль, что и оператор break. Рекомендуется использовать return только для функций.

Pro Java

Оператор return используется для выполнения явного возврата из метода. То есть он снова передает управление объекту, который вызвал данный метод. Как таковой этот оператор относится к операторам перехода. Хотя полное описание оператора return придется отложить до рассмотрения классов и их методов, все же кратко ознакомимся с его особенностями.

Оператор return предписывает интерпретатору Java остановить выполнение текущего метода. Если метод возвращает значение, оператор return сопровождается некоторым выражением. Значение этого выражения становится возвращаемым значением метода.

Некоторые методы объявляются как void, так как они не возвращают никакого значения. Интерпретатор Java выполняет такие методы путем последовательного выполнения операторов до тех пор, пока он не достигнет конца метода. Выполнив последний оператор, интерпретатор выполняет возврат. Однако иногда метод void должен завершиться, не дожидаясь выполнения последнего оператора. В этом случае можно использовать оператор return без выражения.

Теперь это все надо пояснить на примере, и хотя классы мы еще не проходили, я надеюсь что этот пример будет понятным, а если нет, то не страшно, путь этот материал отложится на подкорку.

Чтобы изобразить пример нам понадобятся два класса, один с методом main, другой просто класс с вызываемыми статическими методами. Если не понятно что такое статические методы, то не переживайте, это скажем ну просто вызываемые “подпрограммы”. И так код в студию:

“Главная программа” (главный класс с методом main)

R0001

В строках 8 и 10 вызывается метод vReturn, который не возвращает ни каких значений, а просто вывод, в зависимости от переданного в него значения, то или иное сообщение.

В строках с 13 по 15 вызывается метод strReturn, который возвращает разные строки в зависимости от переданного в него значения.

Передаваемые в методы значения заключены в круглые скобки.

И вызываемая “подпрогорамма” (класс с вызываемыми статическими методами)

R0002

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

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

В операторе if в строках 13 и 14 не использованы фигурные скобки, так как в них нет необходимости, хотя это и повысило бы читаемость кода.

В принципе, в коде этих классов нет ни чего сложного и не понятно. Но даже если это не понятно, то скоро мы уже перейдем к изучению классов и там все прояснится.

И надеюсь вывод, который генерируют данные классы, поможет понять как работает оператор return:

R0003

Первый вызов метода vReturn был сделан с параметром 3 и поскольку он меньше 5, то было напечатано сообщение из этого метода. Второй же вызов этого метода был сделан с параметром 7 и поэтому сразу же произошел возврат из метода, так как 7 больше 5 и данный метод ни чего не напечатал.

Метод strReturn возвращает строку в зависимости от переданного в нее параметра.

Выход из метода и возврат значения

Чтобы прекратить выполнение метода, используют оператор return . Например, проверяем, является ли число положительным и чётным. Если число оказывается меньше или равно 0, метод прерывается и выводится соответствующий комментарий. Если число положительное, проверяем, чётное ли оно.

public static void main(String[] args) < checkIfPositiveEven(9); >public static void checkIfPositiveEven(int n) < if (n if (n%2 != 0) < System.out.println(n + " is not even."); return; >System.out.println(n + " is positive even."); >
9 is not even.

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

public static void main(String[] args) < System.out.println( "Is number 92 greater than ten " + "by absolute value? " + isGreaterThanTenAbs(92)); >public static boolean isGreaterThanTenAbs(int n) < if (n >10) < return true; >if (n < -10) < return true; >return false; >

Вызов не-void’ового метода — это выражение. Например, выражение isGreaterThanTenAbs(1) имеет тип boolean , т. к. метод isGreaterThanTenAbs возвращает значения этого типа.

42

Объявите метод boolean isRemarkable(int n) , который вернёт true, если аргумент n равен сорока двум, и false в противном случае.

Запустить Сообщить об ошибке

Положительное, отрицательное, ноль

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

C#. Понятие метода. Примеры методов в классах. Возврат из метода. Оператор return. Методы без параметров. Ключевое слово void

Понятие метода. Примеры методов в классах. Возврат из метода. Оператор return . Методы без параметров. Ключевое слово void

Поиск на других ресурсах:

1. Что такое метод в классе? Определение метода в классе

Метод (функция) – это фрагмент подпрограммы, которая имеет имя. По этому имени можно вызывать подпрограмму (метод) один или несколько раз. Вместо имени будет подставляться тело подпрограммы (метода). Имя метода целесообразно давать таким, чтобы легко можно было распознать его функцию в программе.

Кроме данных (переменных) классы могут содержать и методы. Методы делают над данными некоторые операции (некоторую работу). Во многих случаях методы представляют доступ к данным класса. С помощью методов класса происходит взаимодействие класса с другими частями программы или другими классами.
Методы дополняют класс дополнительными функциональными возможностями. Как правило, каждый метод выполняет одну функцию.

2. Какие имена запрещается давать методам?

Имя метода может быль любым, которое соответствует правилам использования идентификаторов в C#. Однако не все имена можно использовать как имя метода.

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

  • имя Main() . Это имя точки входа в программу на C#, то есть из метода Main() начинается выполнение программы. Это имя зарезервировано;
  • имена ключевых слов C#.

3. Общая форма определения метода в классе

В общем реализация метода в классе имеет следующий вид:

access return_type MethodName(parameters_list) < // тело метода // . >
  • MethodName – имя метода, который объявляется. По этому имени можно вызвать метод из класса или программы. При вызове метода обязательно указываются параметры метода, которые он получает;
  • access – модификатор, который определяет доступ к методу из разных частей программы. Модификатор доступа может быть private , protected , public . Модификатор доступа может отсутствовать, в этом случае метод считается закрытым ( private );
  • return_type – тип, возвращаемый методом. Если метод не возвращает значения, указывается тип void ;
  • parameter_list – список параметров, который получает метод. Метод может не иметь параметров. В этом случае в скобках ничего не указывается.

4. Какое назначение имеет оператор return в теле метода?

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

return value;

где value – значение, возвращаемое методом. Тип value должен быть совместимым с типом, который возвращает метод.

Вторая форма используется, когда метод не возвращает значения ( void ). В этом случае оператор return имеет вид:

return;

В методе, который не возвращает значения, указывать оператор return не обязательно.

5. Примеры методов в классах

Пример 1. В примере реализуется класс DemoString . В классе объявляется:

  • внутренняя переменная s типа string , которая есть строкой;
  • конструктор класса без параметров. Инициализирует строку s пустым значением;
  • конструктор класса с параметром, который инициализирует строку s ;
  • метод IsLetter() , определяющий есть ли символ c в строке s . Символ c задается входным параметром метода. Метод возвращает значение логического типа bool ;
  • метод Reverse() , принимающий входным параметром строку s и возвращающий реверсное значение этой строки.

Текст реализации класса следующий

// клас, реализующий обработку строк class DemoString < // методы класса // определяет, есть ли символ c в строке s public bool IsLetter(char c, string s) < for (int i = 0; i < s.Length; i++) if (s[i] == c) return true; return false; > // метод, возвращающий реверсную строку s: "abcd" => "dcba" public string Reverse(string s) < string s2 = ""; int len = s.Length; for (int i = 0; i < len; i++) s2 += s[len - i - 1]; return s2; > >

Использование класса DemoString может быть следующим:

DemoString ds = new DemoString(); string s2; s2 = ds.Reverse("abcde"); // s2 = "edcba" bool f = ds.IsLetter('p', "bestprog.net"); // f = True

Пример 2. Объявляется класс Triangle , который содержит:

  • три внутренние переменные с именами a , b , c ;
  • параметризированный конструктор класса, получающий три параметра;
  • внутренний метод класса GetArea() , определяющий площадь треугольника по его сторонам a , b , c . Метод не получает параметров. Метод возвращает значение площади треугольника или 0, если по сторонам a , b , c нельзя построить треугольник;
  • внутренний метод класса без параметров IsTriangle() . Метод определяет, можно ли по трем сторонам a , b , c построить треугольник: сумма двух любых сторон должна быть больше третьей стороны. Метод возвращает логическое значение типа bool .

Текст объявления класса имеет следующий вид:

// класс, описывающий треугольник по трем сторонам a,b,c class Triangle < double a, b, c; // стороны треугольника // конструктор public Triangle(double _a, double _b, double _c) < // вызов внутреннего метода класса из конструктора if (!IsTriangle()) return; a = _a; b = _b; c = _c; > // метод класса, определяющий площадь треугольника public double GetArea() < double p,s; // вызов внутреннего метода из метода GetArea(), проверка if (!IsTriangle()) return 0.0; p = (a + b + c) / 2.0; s = Math.Sqrt(p * (p - a) * (p - b) * (p - c)); return s; > // метод класса, определяющий можно ли по данным a, b, c построить треугольник public bool IsTriangle() < if ((a + b) < c) return false; if ((b + c) < a) return false; if ((a + c) < b) return false; return true; > >

Использование класса Triangle и вызов методов класса может быть следующим:

// использование класса Triangle и его методов Triangle tr1 = new Triangle(5, 6, 3); Triangle tr2; tr2 = new Triangle(7, 7, 7); double area; area = tr1.GetArea(); // area = 7.483314 bool isTriangle = tr2.IsTriangle(); // isTriangle = true area = tr2.GetArea(); // area = 21.217622

6. Аргументы и формальные параметры метода

Аргументы метода – это значения которые передаются в метод во время вызова этого метода из другого метода или программного кода.
Формальные параметры метода – это переменные, которые получены методом как параметры и используются в этом методе. Формальные параметры метода описываются в скобках. Формальные параметры получают значения из аргументов при вызове метода.

Например. Пусть задан метод, который находит сумму цифр целого числа d , которое есть входным параметром

// метод, который возвращает сумму цифр числа d public int Sum(int d) // d - формальный параметр < int t = d; int sum; if (t < 0) t = -t; sum = 0; while (t > 0) < sum = sum + t % 10; t = t / 10; >return sum; >

При вызове такого метода ему передается аргумент x , значение которого равно -2398. Этот аргумент передается формальному параметру d в методе Sum() .

int x = -2398; int sum; sum = Sum(x); // x - аргумент метода Sum(), sum = 22 = 2+3+9+8

7. Как параметры передаются в метод? Синтаксис описания параметров метода

Любой метод может получать параметры. Параметры необходимы методу для того, чтобы проводить над ними некоторые вычисления. Параметры метода задаются в скобках через запятую. Общая форма списка, состоящего из N параметров метода имеет вид:

type1 param1, type2 param2, . typeN paramN

Общая форма метода, который получает N параметров имеет вид:

return_type MethodName(type1 param1, type2 param2, . typeN paramN) < // . >
  • return_type – тип, который возвращается методом MethodName ;
  • type1 , type2 , … typeN – типы параметров с именами param1 , param2 , …, paramN .

8. Использование ключевого слова void в параметрах методов

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

return_type MethodName() < // . >

где return_type – тип, который возвращает метод с именем MethodName() .

Например. Объявляется метод, который возвращает число Pi .

// метод, не получающий параметров double Pi() < return 3.14159265358979323846; >

Если метод ничего не возвращает, то вместо типа указывается слово void

void MethodName(parameters_list) < // . >

где parameter_list – список параметров метода с именем MethodName , которые он получает.

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

void MethodName() < // . >

Пример. Объявляется метод, который не получает и не возвращает ничего. В теле метода выводится сообщение «Hello world!» для консольных приложений.

// метод, который не получает и не возвращает параметров void Hello() < Console.WriteLine("Hello world!"); >

9. Что значит термин «недоступный код» в методе?

Недоступный код – это часть кода метода, который никогда не будет выполнен. Недоступный код есть ошибкой программиста. Если в методе есть недоступный код, то компилятор выдает предупредительное сообщение соответствующего содержания.

Например. Ниже продемонстрирован метод, в котором есть недоступный (неиспользованный) код.

// метод, который содержит неиспользованный код bool More5(int n) < if (n > 5) return true; else return false; // неиспользованный код return true; // этот оператор никогда не выполнится >

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 следующий
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp6 < // клас, реализующий комплексное число class Complex < // внутренние переменные private double real; // действительная часть private double imag; // мнимая часть // конструктора public Complex() < real = imag = 0; >public Complex(double _real, double _imag) < real = _real; imag = _imag; >// методы доступа // получить значения переменных real, imag public void GetRI(out double _real, out double _imag) < _real = real; _imag = imag; >// установить новые значения real и imag public void SetRI(double _real, double _imag) < real = _real; imag = _imag; >// метод, возвращающий текущий экземпляр (объект) класса Complex public Complex GetComplex() < return this; > // метод, возвращающий объект класса Complex как out-параметр public void GetComplex2(out Complex _cmp) < Complex cmp = new Complex(real, imag); // создать объект _cmp = cmp; // выполнить присваивание > > class Program < // метод класса Program, возвращающий объект (экземпляр) класса Complex public Complex GetComplex3(double _real, double _imag) < Complex comp = new Complex(); comp.SetRI(_real, _imag); return comp; > static void Main(string[] args) < // использование методов GetComplex() и GetComplex2() класса Complex Complex c = new Complex(3, 5); // создать экземпляр класса double i, r; // возврат объекта с помощью метода GetComplex() Complex c2; // объявить ссылку на класс Complex c2 = c.GetComplex(); // проверка c2.GetRI(out i, out r); // i=3, r=5 Console.WriteLine("Method GetComplex():"); Console.WriteLine("i = ", i); Console.WriteLine("r = ", r); // возврат экземпляра класса Complex как out-параметра Complex c3; // ссылка на Complex c.GetComplex2(out c3); // возвратить объект класса Complex // проверка c3.GetRI(out i, out r); // i=3, r=5 Console.WriteLine("Method GetComplex2():"); Console.WriteLine("i = ", i); Console.WriteLine("r = ", r); Console.ReadKey(); > > >

Из вышеприведенного примера видно, что продемонстрировано возврат объекта класса Complex с помощью трех методов (способов):

  • возврат экземпляра текущего класса оператором return – метод GetComplex() класса Complex ;
  • возврат экземпляра класса Complex с помощью out-параметра – метод GetComplex2() класса Complex ;
  • возврат экземпляра класса Complex из метода другого класса – метод GetComplex3() класса Program.

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

Method GetComplex(): i=1 r=5 Method GetComplex2(): i=3 r=5

Связанные темы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *