Повернене значення та оператор return
Метод може повертати значення, деякий результат. У наведеному вище прикладі було визначено два методи, які мали тип void. Методи з таким типом не повертають жодного значення. Вони просто виконують деякі дії.
Але методи також можуть повертати деяке значення. Для цього використовується оператор return, після якого вказується повернене значення:
return return value;
Наприклад, визначимо метод, який повертає значення типу string:
string GetMessage()
{
return “Hello”
}
Метод GetMessage має тип string, тому він повинен повертати рядок. Ось чому в тілі методу використовується оператор return, після якого вказується повернений рядок.
При цьому методи, які мають будь-який тип, відмінний від void як тип повернення, обов'язково повинні використовувати оператор return для повернення значення. Наприклад, наступне визначення методу є неправильним:
string GetMessage()
{
Console.WriteLine(“Hello”);
}
Також повинна бути відповідність між типом повернення методу і значенням, яке повертається після оператора return. Наприклад, у наступному випадку тип повернення — string, але метод повертає число (тип int), тому це визначення методу є неправильним:
string GetMessage()
{
return 3; // Error! The method should return a string, not a number
}
Результат методів, що повертають значення, ми можемо присвоювати змінним або використовувати іншим способом у програмі:
string GetMessage()
{
return “Hello”
}
string message = GetMessage(); // get the result of the method into the variable message
Console.WriteLine(message); // Hello
Метод GetMessage() повертає значення типу string. Тому ми можемо присвоїти це значення деякій змінній типу string: string message = GetMessage();
Або навіть передати його як значення параметру іншого методу:
string GetMessage()
{
return “Hello”
}
void PrintMessage(string message)
{
Console.WriteLine(message);
}
PrintMessage(GetMessage());
У виклику PrintMessage(GetMessage()) спочатку викликається метод GetMessage(), і його результат передається в параметр message методу PrintMessage.
Після оператора return можна також вказати складні вирази або виклики інших методів, які повертають певний результат. Наприклад, визначимо метод, який повертає суму чисел:
int Sum(int x, int y)
{
return x + y;
}
int result = Sum(10, 15); // 25
Console.WriteLine(result); // 25
Console.WriteLine(Sum(5, 6)); // 11
Метод Sum() має тип int, тому він повинен повертати значення типу int — ціле число. Тому в тілі методу використовується оператор return, після якого йде число, яке повертається (в даному випадку, результат суми змінних x та y).
Скорочена версія методів з результатом
Ми також можемо скоротити методи, що повертають значення:
string GetMessage()
{
return “hello”
}
подібно до наступного методу:
string GetMessage() => “hello”;