Тема 6.2 Параметры методов

Содержание

Слайд 2

Стек (Stack) — это область оперативной памяти, создаваемая для каждого потока
Операции стека:
Push
Pop
Peek

Стек (Stack) — это область оперативной памяти, создаваемая для каждого потока Операции

Куча (heap) – хранилище памяти, расположенное в ОЗУ

Слайд 3

Data element

Data element

Data element

Data element

Data element

Data element

Data element

Data element

Data element

Data element

Data element

Data

Data element Data element Data element Data element Data element Data element
element

Data element

Data element

Data element

Data element

Добавление

извлечение

stack

stack

Last In – First Out (LIFO)

Слайд 4

Heap

100 b

2 Mb

stack

Bool k = true

Object obj

String s

Double z = 5.5

Int x

Heap 100 b 2 Mb stack Bool k = true Object obj
= 10

Слайд 5

Способы передачи параметров

Основная программа

Подпрограмма
(метод)

Стек

Копии параметров

Работа с копиями параметров

Передача по значению

Основная программа

Подпрограмма
(метод)

Стек

Адреса
параметров

Работа

Способы передачи параметров Основная программа Подпрограмма (метод) Стек Копии параметров Работа с
с параметрами через адреса

Передача по ссылке

Слайд 6

При передаче по значению метод получает копии значений аргументов, и операторы метода

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

Слайд 7

Параметры – значения

void P( int x)

Алгоритм:
из ячейки памяти, в которой

Параметры – значения void P( int x) Алгоритм: из ячейки памяти, в
хранится переменная, передаваемая в метод, берется ее значение и копируется в специальную область памяти – область параметров.
Метод работает с этой копией.
По завершении работы метода область параметров освобождается.

Слайд 8

Параметры – ссылки

void P( ref int x)

static void P(int

Параметры – ссылки void P( ref int x) static void P(int a,
a, ref int b)
{
a = 44; b = 33;
Console.WriteLine($" внутри метода {a} {b}");
}
static void Main(string[] args)
{
int a = 2, b = 4;
Console.WriteLine($" до вызова {a} {b}");
P(a, ref b);
Console.WriteLine($" после вызова {a} {b}");

Слайд 9

Выходные параметры

P(int a, out int b)

Параметру, имеющему этот спецификатор, должно быть

Выходные параметры P(int a, out int b) Параметру, имеющему этот спецификатор, должно
обязательно присвоено значение внутри метода

static void P(int a, out int b)
{
a = 44; b = 33;
Console.WriteLine($" внутри метода {a} {b}");
}
static void Main(string[] args)
{
int a = 2, b;
P(a, out b);
Console.WriteLine($" после вызова {a} {b}");
}

Слайд 10

Демонстрация применения выходных параметров (ref и out)

static void fun(double x, out

Демонстрация применения выходных параметров (ref и out) static void fun(double x, out
int n, out double fra)
{
n = (int)x;
fra = x - n;
}
static void Main(string[] args)
{
double real = 53.93;
double dPart;
int iPart;
fun(real, out iPart, out dPart);
Console.WriteLine($"iPart = {iPart}, dPart = {dPart}");

Слайд 11

Пример параметра - массива

static void ps(int[] mas, out int k)
{

Пример параметра - массива static void ps(int[] mas, out int k) {
int i;
k = -8;
for (i = 0; i <= mas.Length - 1; i++)
if (mas[i] < 0)
{
k = i;
break;
}
}
static void Main(string[] args)
{
int[] m = { 5, 9, 2, 6, -7, 56, 100 };
int p;
ps(m, out p);
if (p < 0) Console.WriteLine("Отрицательных чисел нет");
else
Console.WriteLine("Номер элемента " + p);
}

Слайд 12

Массив параметров

Позволяет передавать неограниченное количество параметров

static void GetSumm(params int[] nums)
{

Массив параметров Позволяет передавать неограниченное количество параметров static void GetSumm(params int[] nums)
int summ = 0;
foreach (var n in nums)
{
summ += n;
}
Console.WriteLine(summ);
}
static void Main()
{
int[] array = { 1, 2, 3, 4, 5 };
GetSumm(array);
GetSumm(1, 2, 3, 4);
GetSumm(1, 2, 3);
GetSumm();
}
Имя файла: Тема-6.2-Параметры-методов.pptx
Количество просмотров: 27
Количество скачиваний: 0