Обратите внимание на то, что значения присваиваются переменнымlcfиgcfв методеMain () до вызова методаHasComFactor (). Если бы параметры методаHasComFactor() были типаref,а неout,это привело бы к ошибке. Данный метод возвращает логическое значениеtrueилиfalse,в зависимости от того, имеется ли общий множитель у двух целых чисел. Если он имеется, то посредством параметров типаoutвозвращаются наименьший и наибольший общий множитель этих чисел. Ниже приведен результат выполнения данной программы.

Наименьший общий множитель чисел 231 и 105 равен 3 Наибольший общий множитель чисел 231 и 105 равен 21 Общий множитель у чисел 35 и 51 отсутствует.

Использование модификаторов ref и out для ссылок на объекты

Применение модификаторовrefиoutне ограничивается только передачей значений обычных типов. С их помощью можно также передавать ссылки на объекты. Если модификаторrefилиoutуказывает на ссылку, то сама ссылка передается по ссылке. Это позволяет изменить в методе объект, на который указывает ссылка. Рассмотрим в качестве примера следующую программу, в которой ссылочные параметры типаrefслужат для смены объектов, на которые указывают ссылки.

// Поменять местами две ссылки.

using System;

class RefSwap { int a, b;

public RefSwap(int i, int j) { a = i; b = j;

public void Show() {

Console.WriteLine("a: {0}, b: {1}", a, b);

}

// Этот метод изменяет свои аргументы.

public void Swap(ref RefSwap obi, ref RefSwap ob2) {

RefSwap t;

t = obi; obi = ob2; ob2 = t;

}

}

class RefSwapDemo { static void Main() {

RefSwap x = new RefSwap(1, 2);

RefSwap у = new RefSwap(3, 4);

Console.Write("x до вызова: ") ; x.Show ();

Console.Write("у до вызова: "); у.Show();

Console.WriteLine() ;

// Смена объектов, на которые ссылаются аргументы х и у. х.Swap (ref х, ref у);

Console.Write("х после вызова: "); х.Show();

Console.Write("у после вызова: ") ; у.Show ();

}

}

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

х до вызова: а: 1, Ь: 2 у до вызова: а: 3, Ь: 4

х после вызова: а: 3, Ь: 4 у после вызова: а: 1, Ь: 2

Перейти на страницу:

Похожие книги