Программирование на языке C#
Download 1.19 Mb. Pdf ko'rish
|
Программирование на языке C#
- Bu sahifa navigatsiya:
- 11.5. Передача по ссылке с использование модификатора out
модификатора 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling