Модуль 4. Работа с файлами.


Передача типов значений с помощью ссылки

Передача типов значений с помощью значения

Пример: написать метод вычисляющий факториал числа, и возвращающий это значение.

static int factorial(int n){ int i, res; res = 1; for (i = 1; i <= n; i++) res = res * i; return res;}static void Main(string[] args){ int i;//независимая переменная for (i = 0; i <= 13;i++) Console.WriteLine("{0}! = {1}",i,factorial(i)); Console.ReadKey();}


Рисунок 1 - Пример выполнения

Ключевое слово out используется для передачи аргументов по ссылке. Оно похоже на ключевое слово ref, за исключением того, что ref требует инициализации переменной перед ее передачей. Для работы с параметром out определение метода и вызывающий метод должны явно использовать ключевое слово out. Таким образом, если значение параметра до вызова метода не определено, используют out, если определено используют ref.

Рассмотрим пример подпрограммы ввода, обработки и вывода массива. "Ввести массив, заменить его элементы факториалами, вывести массив".

static void enter(out int[] massiv1) { int i, N; string s; //вводим число элементов Console.Write("Введите число элементов массива N="); s = Console.ReadLine(); N = Convert.ToInt32(s); //создаём массив необходимой длины massiv1 = new int[N]; //запускаем цикл по всем элементам массива for (i = 0; i < N; i++) { //вводим i-ый элемент Console.Write("Введите {0}-й элемент массива ", i); s = Console.ReadLine(); massiv1[i] = Convert.ToInt32(s); } }static void process(ref int[] massiv1) { for(int j=0;j< massiv1.Length;j++) { int f = 1; for (int i=2;i<=massiv1[j];i++) f=f*i; massiv1[j] = f; } }static void output(int[] mas) { Console.WriteLine("Список элементов массива"); foreach (int i in mas) Console.Write("{0} ", i); }static void Main(string[] args) { int[] my_massiv; enter(out my_massiv); process(ref my_massiv); output(my_massiv); Console.ReadKey(); }


Рисунок 2 - Пример выполнения