Программирование на языке C#


  Передача входных параметров по значению


Download 1.19 Mb.
Pdf ko'rish
bet51/66
Sana23.10.2023
Hajmi1.19 Mb.
#1717181
1   ...   47   48   49   50   51   52   53   54   ...   66
Bog'liq
Программирование на языке C#

11.1. 
Передача входных параметров по значению 
Передача параметров по значению означает, что в функцию 
передаются только значения, которые копируются в переменные
являющиеся входными аргументами функции в момент её вызова. 
Рассмотрим пример формирования функции, которая будет 
определять минимум среди трех значений. Имя функции зададим, 
например, как 
MinValueXYZ

В качестве входных параметров 
обозначим три целочисленные переменные 
x

y

z
среди которых 
будем определять минимум. Результатом функции будет минимальное 
значение, следовательно, для функции зададим тип возвращаемого 
значения 
int
. Реализация функции представлена в листинге 28. 
public static int MinValueXYZ (int x, int y, int z) 

int min = x; 
if (min > y) 
min = y;
if (min > z) 
min = z; 
return min; 

Листинг 28. 
В листинге 29 рассмотрим вызов функции 
MinValueXYZ
, с 
передачей параметров 
valX

valY

valZ
и сохранением возвращаемого 
87 


значения в переменную 
minVal
. При вызове функции управление 
передается в функцию 
MinValueXYZ, 
при этом значения из 
переменных 
valX, valY

valZ 
копируются во входные параметры 
функции 
x
,
y
,
z
.
public static void Main (string[] args) 

int valX = 12, valY = 14, valZ=7; 
int minVal; 
minVal = MinValueXYZ(valX, valY, valZ); 
Console.WriteLine ("Минимальное значение = {0}", minVal);} 
Листинг 29. 
11.2. 
Передача ссылочных типов по значению 
В случае передачи параметров по значению ссылочных типов
значение, копируемое во входные параметры функции, является 
ссылка. Следовательно, получив доступ к ссылке можно менять 
значения соответствующего параметра непосредственно в функции, 
при этом все изменения сохраняются при завершении выполнении 
функции.
Например, рассмотрим целочисленный массив, в котором обнулим 
все четные значения. Для этого необходимо не пустую ссылку на 
массив передать в функцию 
SetZeroValues
, в этом случае входной 
параметр будет смотреть на участок памяти, в котором 
непосредственно будут изменяться значения. Следовательно, в этом 
случае, результатом будет новый массив, но, так как он 
непосредственно меняется в куче, то возвращать его не нужно, тогда 
функция будет типа 
void
. Пример функции и пример вызова функции 
приводится в листинге 30.
public static void SetZeroValues(int[] arr) 

if (arr != null) 

for (int i = 0; i < arr.Length; i++) 

if ((arr[i] % 2) == 0) 
arr[i] = 0; 



88 


static void Main(string[] args) 

int[] mass = new int[8] { 1, 2, 3, 4, 5, 6, 7, 8 }; 
SetZeroValues(mass); 
foreach (int elem in mass){ 
Console.Write("{0},", elem); 


Листинг 30. 
В результате получим массив со значениями - 
{ 1, 0, 3, 0, 5, 0, 
7, 0 }. 

Download 1.19 Mb.

Do'stlaringiz bilan baham:
1   ...   47   48   49   50   51   52   53   54   ...   66




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling