Методы
218.48K
Category: programmingprogramming

Методы

1. Методы

2.

Методы
Метод — это именованная часть программы, которая может вызываться из других частей программы столько раз, сколько
необходимо. Если переменные хранят некоторые значения, то методы содержат в себе набор операторов, которые выполняют
определенные действия.
Общее определение методов выглядит следующим образом:
[модификаторы] тип_возвращаемого_значения название метода ([параметры])
{
// тело метода
}
Модификаторы и параметры необязательны.

3.

Создание и вызов методов
Создание:
Указать тип возвращаемого значения, если метод ничего не возвращает указать void.
Выбрать имя метода.
Если метод принимает аргументы – обязательно указать их тип и имя, если нет – оставить скобки () пустыми.
Если метод имеет возвращаемое значение, обязательно в теле метода должно присутствовать ключевое слово return. Тип
возвращаемого значения метода должен соответствовать типу значения, указанному после ключевого слова return.
Вызов:
• Написать имя метода.
• Обязательно указать после имени скобки(), если метод принимает какие-то аргументы, передать соответствующее количество
аргументов соответствующего типа.

4.

Возврат из метода и возврат значения
static void Main(string[] args) {
string message = Hello(); // вызов первого метода
Console.WriteLine(message);
Здесь определены два метода:
Sum(); // вызов второго метода
Первый метод Hello возвращает значение типа string. Поэтому мы
можем присвоить это значение какой-нибудь переменной типа
string:
Console.ReadLine();
}
static string Hello() {
return "Hello World!";
}
static void Sum() {
int x = 2;
int y = 3;
Console.WriteLine("{0} + {1} = {2}", x, y, x + y);
}
string message = Hello();
Второй метод - Sum - просто складывает два числа и выводит
результат на консоль, при этом ничего не возвращает – ключевое
слово void

5.

Параметры методов
Параметры представляют собой переменные, которые определяются в сигнатуре метода и создаются при его вызове.
Существует два способа передачи параметров в метод в языке C#: по значению и по ссылке.
И при вызове этого метода в программе нам обязательно надо передать на место параметров значения, которые соответствуют
типу параметра. Данные значения еще называют аргументами.
Передача по значению:
static int Sum(int x, int y){
return x + y;
}
Передача параметров по ссылке:
Для
ref-параметра
вы
должны
передать
его
инициализированным, и можете пользоваться его исходным
значением.
А
для
out-параметра
вы
не
обязаны
инициализировать его перед вызовом метода, не можете
использовать его значение в методе до присваивания, и
обязаны инициализировать его в методе.
Таким образом, out-параметр — это как бы дополнительное
возвращаемое значение функции. А ref-параметр — просто
параметр, изменения которого видны снаружи функции.
На уровне CLR для out- и ref-параметров используется один и
тот же механизм, но это незначительная техническая
подробность. Разница в семантике.
static void Main(string[] args){
string s1;
func1(out s1);
string s2 = "";
func2(ref s2);
Console.ReadLine();
}
private static void func1(out string value){
//value = "Hello World!";
Console.WriteLine(value); // нельзя, value не инициализировано
//if (false)
//
return;
// нельзя, забыли установить значение
value
value = "Hello World!";
}
private static void func2(ref string value){
Console.WriteLine(value); // можно
if (false)
return;
// не проблема, у value остаётся старое
значение
value = "Hello World!";
}

6.

Необязательные параметры
C# позволяет использовать необязательные параметры.
Для таких параметров нам необходимо объявить значение по умолчанию.
Также следует учитывать, что после необязательных параметров все последующие параметры также должны быть
необязательными:
static int OptionalParam(int x, int y, int z = 5, int s = 4){
return x + y + z + s;
}
Так как последние два параметра объявлены как необязательные, то мы можем один из них или оба опустить
static void Main(string[] args){
OptionalParam(2, 3);
OptionalParam(2, 3, 10);
Console.ReadLine();
}

7.

Именованные параметры
В предыдущих примерах при вызове методов значения для параметров передавались в порядке объявления этих параметров в
методе. Но мы можем нарушить подобный порядок, используя именованные параметры
static int OptionalParam(int x, int y, int z = 5, int s = 4){
return x + y + z + s;
}
static void Main(string[] args){
OptionalParam(x: 2, y: 3);
//Необязательный параметр z использует значение по умолчанию
OptionalParam(y: 2, x: 3, s: 10);
Console.ReadLine();
}

8.

Массив параметров и ключевое слово params
Используя ключевое слово params, мы можем передавать неопределенное количество параметров
На место параметра с модификатором params мы можем передать как отдельные значения, так и массив значений, либо вообще
не передавать параметры.
Однако данный способ имеет ограничения: после параметра с модификатором params мы не можем указывать другие параметры
static void Addition(params int[] integers){
int result = 0;
for (int i = 0; i < integers.Length; i++)
{
result += integers[i];
}
Console.WriteLine(result);
}
static void Main(string[] args){
Addition(1, 2, 3, 4, 5);
int[] array = new int[] { 1, 2, 3, 4 };
Addition(array);
Addition();
Console.ReadLine();
}

9.

Перегрузка методов
Мы можем создать один и тот же метод, но с разным набором параметров. И в зависимости от имеющихся параметров применять
определенную версию метода. Такая возможность еще называется перегрузкой методов (method overloading).
И в языке C# мы можем создавать в классе несколько методов с одним и тем же именем. Но при этом мы должны учитывать, что
методы с одним и тем же именем должны иметь либо разное количество параметров, либо параметры разных типов.
class Calculator{
public void Add(int a, int b){
int result = a + b;
Console.WriteLine($"Result is {result}");
}
public void Add(int a, int b, int c){
int result = a + b + c;
Console.WriteLine($"Result is {result}");
}
class Program{
static void Main(string[] args){
Calculator calc = new Calculator();
calc.Add(1, 2); // 3
calc.Add(1, 2, 3); // 6
calc.Add(1, 2, 3, 4); // 10
calc.Add(1.4, 2.5); // 3.9
Console.ReadKey();
}
}
public int Add(int a, int b, int c, int d){
int result = a + b + c + d;
Console.WriteLine($"Result is {result}");
return result;
}
public void Add(double a, double b){
double result = a + b;
Console.WriteLine($"Result is {result}");
}
}
Стоит отметить, что разные версии метода могут иметь разные
возвращаемые значения, как в данном случае третья версия
возвращает объект типа int.
English     Русский Rules