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