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


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

модификатора ref 
 
В случае, когда, переменные ссылочных типов требуется 
переопределить, т.е. создать заново в памяти, их нужно передавать по 
ссылке. Например, рассмотрим функцию создания массива заданной 
размерности, с заполнением случайными числами в заданном 
диапазоне. Пример реализации 
CreateArray
функции приводится в 
листинге 33. В качестве входных аргументов в функцию передаем 
массив 
ref int[] arr 
по ссылке, с целью его создания с новой 
длиной 
int size
и заполнение случайными числами в диапазоне, 
определяемым входными параметрами 
int minRange
,
int maxRange

задающие минимальную и максимальную границу соответственно.
public static void CreateArray(ref int[] arr, int size, int 
minRange, int maxRange) 

if(size > 0) 

System.Random rnd = new Random(); 
arr = new int[size]; 
for (int ix = 0; ix < arr.Length; ix++) 

arr[ix] = rnd.Next(minRange, maxRange); 



else 
arr = null; 

Листинг 33. 
Рассмотрим вызов функции 
CreateArray
на примере (листинг 34), 
в котором переопределим массив 
int[] mass

В результате работы 
функции будет создан новый массив с новой длиной равной 15 и 
новыми значениями в диапазоне от 
4
до 
10
.
int[] mass = new int[8] { 1, 2, 3, 4, 5, 6, 7, -8 }; 
90 


CreateArray(ref mass, 15, 4, 10); 
Листинг 34. 
11.5. 
Передача по ссылке с использование модификатора out 
Работа с модификатором 
out
совпадает с работой модификатора 
ref
, обозначающего передачу параметра по ссылке. Отличие 
заключается в том, что соответствующий параметр является выходным 
параметром, то есть, инициализация выполняется только внутри 
функции. Кроме того, параметр не зависит от входного значения, при 
его передаче на входе всегда будет пустое значение.
В листинге 35 рассматривается пример реализации функции 
MinValueXYZ

которая определяет минимальное значение из трех 
чисел. Здесь параметры 
int x

int y

int z
являются входным, так 
как среди этих чисел определяется минимум. Результат будет записан 
во выходную переменную 
out int rez
, которая получит свое 
значение внутри функции. В результате, после окончания работы 
функции, переменная 
rez
получит минимальное значение 
-12

public static void MinValueXYZ(int x, int y, 
int z, out int rez) 

rez = x; 
if (rez > y) 
rez = y; 
if (rez > z) 
rez = z; 

static void Main(string[] args) 

int valX = -12, valY = 14, valZ = 7; 
int minVal; 
MinValueXYZ(valX, valY, valZ, out minVal); 
Console.Write("{0}", minVal); 

Листинг 35. 

Download 1.19 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   ...   66




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