Методы. Способы передачи параметров в C#. Методы. Методы. Способы передачи параметров. Преподаватель Кривошеина А. В
Скачать 157.96 Kb.
|
Методы. Способы передачи параметров.Преподаватель Кривошеина А.В.ЧУО «Колледж бизнеса и права»Определение метода
Синтаксис метода[ атрибуты ] [ спецификаторы ] тип имя ( [ параметры ] ){тело_метода}
метод Main
{}Пример методаclass Program{{}{}}Вызов метода
имя_метода ([аргументы]);Вызов метода SayHello:Вызов метода using System;namespace HelloApp{class Program{{}{SayHello();}}}Hello –консольный выводметод SayHello Возвращение значения
return возвращаемое_значение;Примеры методов с возвращаемым значением:static int Sum(){int x = 2;int y = 3;int z = x + y;return z;}{return "Hello";}return x + y; class Programclass Program{{string message = Hello();int s = Sum();Console.WriteLine(message); // HelloConsole.WriteLine(s); // 5}…}Результат метода, который возвращает значение, мы можем присвоить переменной или использовать иным образом в программе Выход из метода
{int hour = 23;if (hour > 22){return;}else{}}Сокращенная запись методов{}static void SayHello() => Console.WriteLine("Hello");Подобным образом мы можем сокращать и методы, которые возвращают значение{return "Hello";}static string Hello() => "Hello"; Параметры методов
static int Sum(int x, int y){return x + y;}{int result = Sum(10, 15);Console.WriteLine(result); // 25}Параметры методов
{int a = 25;int b = 35;int result = Sum(a, b);Console.WriteLine(result); // 60result = Sum(b, 45);Console.WriteLine(result); // 80result = Sum(a + b + 12, 18);Console.WriteLine(result); // 90}Необязательные параметры
{}
{OptionalParam(2, 3);OptionalParam(2,3,10);}Именованные параметры
{}{OptionalParam(x:2, y:3);//z использует значение по умолчаниюOptionalParam(y:2, x:3, s:10);}Передача параметров по ссылке и значению
Передача параметров по значениюclass Program{{Sum(10, 15); // параметры передаются по значению}static int Sum(int x, int y){return x + y;}}Передача параметров по ссылке и модификатор ref{int x = 10;int y = 15;Addition(ref x, y); // вызов методаConsole.WriteLine(x); // 25}// параметр x передается по ссылкеstatic void Addition(ref int x, int y){x += y;}Отличия
Пример передачи параметра по значению{int a = 5;IncrementVal(a);Console.WriteLine($"Переменная a после передачи по значению равна {a}");}static void IncrementVal(int x){x++;Console.WriteLine($"IncrementVal: {x}");}
IncrementVal: 6Переменная a после передачи по значению равна = 5Пример передачи параметра по ссылкеstatic void Main(string[] args){int a = 5;IncrementRef(ref a);Console.WriteLine($"Переменная a после передачи ссылке равна = {a}");}static void IncrementRef(ref int x){x++;Console.WriteLine($"IncrementRef: {x}");}
IncrementRef: 6Переменная a после передачи по ссылке равна = 6Выходные параметры. Модификатор out
static void Sum(int x, int y, out int a){a = x + y;}Использование в программе:как и в случае с ref ключевое слово out используется как при определении метода, так и при его вызове {int x = 10;int z;Sum(x, 15, out z);Console.WriteLine(z);}{int x = 10;int area;int perimetr;GetData(x, 15, out area, out perimetr);Console.WriteLine("Площадь : " + area);Console.WriteLine("Периметр : " + perimetr);}static void GetData(int x, int y, out int area, out int perim){area= x * y;perim= (x + y)*2;}Мы можем вернуть из метода не один вариант, а несколько Вместо:
int x = 10;int area;int perimetr;GetData(x, 15, out area, out perimetr);
int x = 10;GetData(x, 15, out int area, out int perimetr);Входные параметры. Модификатор in
Пример (входные параметры с модификатором in)Переменные, передаваемые в качестве аргументов in, требуется инициализировать перед передачей в метод static void GetData(in int x, int y, out int area, out int perim){// x = x + 10; – нельзя изменить значение параметра xy = y + 10;area = x * y;perim = (x + y) * 2;}static void Addition(params int[ ] integers){int result = 0;for (int i = 0; i < integers.Length; i++){result += integers[i];}}{Addition(1, 2, 3, 4, 5);int[ ] array = new int[ ] { 1, 2, 3, 4, 5, 6, 7 };Addition(array);Addition();}
Вопросы и упражнения
class Program{{int x;Increment(ref x);Console.WriteLine(x);}static void Increment(ref int x){x++;}}
class Program{{int i = 0;Console.Write(i++ + Calculate(i));Console.WriteLine(i);}public static int Calculate(int i){Console.Write(i++);return i;}}Дан следующий метод:
static void Display(params int[ ] numbers){int result = 0;{}}
Дан следующий метод:
static void Display(int[ ] numbers){int result = 0;{}}
Домашнее задание:
|