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


  Передача по ссылке с использованием модификатора ref


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

11.3. 
Передача по ссылке с использованием модификатора ref 
Модификатор 
ref
обеспечивает передачу параметров в функцию 
по ссылке, следовательно, получив доступ к ссылке, можно менять 
значения соответствующего параметра непосредственно в функции
при этом все изменения сохраняются при завершении выполнении 
функции. Перед передачей по ссылке, переменные должны быть 
проинициализированы некоторым значением. Это значение будет 
рассматриваться в качестве входного, которое, также может быть 
обновлено новым значением, полученным в функции. 
Модификатор 
ref
используется как при объявлении параметра 
функции, так и при передаче параметра в функцию при ее вызове.
Например, рассмотрим функцию 
SetNegativeValue
(листинг 31), 
которая меняет знак на отрицательный в случае четности значения. 
Здесь входной параметр передается по ссылке, следовательно, 
предполагается, что текущее решение зависит от входного значения, и 
может быть изменено на новое непосредственно в памяти.
public static void SetNegativeValue(ref int val) 

if ((Math.Abs(val) % 2) == 0) 
if(val > 0) 
val = val * (-1); 

Листинг 31. 
Рассмотрим вариант вызова этой функции для элементов массива 
(
листинг 32). Здесь каждый элемент массива передается по ссылке. 
Текущее значение элемента анализируется в функции и меняется в 
соответствии с заданным условием, в результате получим в новый 
массив вида - 
{1, -2, 3, -4, 5, -6, 7, -8}

89 


int[] massA = new int[8] { 1, 2, 3, 4, 5, 6, 7, -8 }; 
for ( int i = 0; i < massA.Length; i++) 

SetNegativeValue(ref massA[i]); 

Листинг 32. 
11.4. 
Передача ссылочных типов по ссылке с использованием 

Download 1.19 Mb.

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




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