Console.WriteLine("а до вызрва: " + a); ob.Sqr(ref a); // обратите внимание на применение модификатора ref Console.WriteLine("а после вызова: " + а);

}

}

Как видите, модификаторrefуказывается перед объявлением параметра в самом методе и перед аргументом при вызове метода. Ниже приведен результат выполнения данной программы, который подтверждает, что значение аргументаадействительно было изменено с помощью методаSqr ().

а до вызова: 10 а после вызова: 100

Теперь, используя модификаторref,можно написать метод, переставляющий местами значения двух своих аргументов простого типа. В качестве примера ниже приведена программа, в которой метод Swap () выполняет перестановку значений двух своих целочисленных аргументов, когда он вызывается.

// Поменять местами два значения.

using System;

class ValueSwap {

// Этот метод меняет местами свои аргументы, public void Swap(ref int a, ref int b) { int t; t = a; a = b; b = t;

}

}

class ValueSwapDemo { static void Main() {

ValueSwap ob = new ValueSwap();

int x=10, у = 20;

Console.WriteLine("x и у до вызова: " + х + " " + у); ob.Swap (ref х, ref у);

Console.WriteLine("х и у после вызова: " + х + " " + у);

}

}

Вот к какому результату приводит выполнение этой программы.

х и у до вызова: 10 20 х и у после вызова: 20 10

В отношении модификатораrefнеобходимо иметь в виду следующее. Аргументу, передаваемому по ссылке с помощью этого модификатора, должно быть присвоено значениедовызова метода. Дело в том, что в методе, получающем такой аргумент в качестве параметра, предполагается, что параметр ссылается на действительное значение. Следовательно, при использовании модификатораrefв методе нельзя задать первоначальное значение аргумента.

Использование модификатора параметра out

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

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